Quantcast
Channel: ASP.NET AJAX + Ajax Control Toolkit (ACT)
Viewing all articles
Browse latest Browse all 5678

can't get focus on textbox

$
0
0

When a user on my site exits out of a ModalPopupExtender, I can't get the focus to go to the first textbox in the page as it does in other places, with this code:

ListView lsv = Helpers.FindChild(Page, "lsvNewInvite") as ListView;
if (lsv != null)
{
    TextBox txt = Helpers.FindChild(lsv, "txtFriendFirstName") as TextBox;
    if (txt != null)
        txt.Focus();
}


public static Control FindChild(Control start, string id)
{
    System.Web.UI.Control foundControl;
    if (start != null)
    {
        foundControl = start.FindControl(id);
        if (foundControl != null)
            return foundControl;
        foreach (Control c in start.Controls)
        {
            foundControl = FindChild(c, id);
            if (foundControl != null)
                return foundControl;
        }
    }
    return null;
}

I suspect that it has to do with a postback issue but I can't figure it out. Here is the code that I believe is the most applicable:

<asp:UpdatePanel ID="udpModalSuccess" runat="server"><ContentTemplate><%--success popup items--%><div style="display: none;"><asp:Button ID="btnDummy" UseSubmitBehavior="true" OnClientClick="ShowModalPopup" OnClick="btnDummy_Click" runat="server" /><%--Dummy Button added to assign the target controlid of PopupExtender--%><asp:Button ID="btnDummyButton" UseSubmitBehavior="true" runat="server" Text="DummyButton" Style="display: none;" /></div><asp:Panel ID="pnlNewInviteSuccess" class="modalPopup" runat="server"><div><asp:Label ID="lblNewInviteSuccess" runat="server" /></div><br /><div><asp:Button ID="btnNewInviteReturn" Text="OK" CssClass="button" runat="server" /></div></asp:Panel><%--Here I have changed the TargetControlID property--%><act:ModalPopupExtender ID="mpeNewInviteSuccess" TargetControlID="btnDummyButton" CancelControlID="btnNewInviteReturn"
        BackgroundCssClass="modalBackground" PopupControlID="pnlNewInviteSuccess" DropShadow="true"
        BehaviorID="mpe" runat="server"></act:ModalPopupExtender></ContentTemplate></asp:UpdatePanel>



    protected void lsvNewInvite_ItemCommand(Object sender, ListViewCommandEventArgs e)
    {
        if (e.CommandName == "Insert")
        {
            //place cursor in txtFirstName
            var lsv = Helpers.FindChild(this, "lsvNewInvite") as ListView;
            TextBox txt = Helpers.FindChild(lsv, "txtFriendFirstName") as TextBox;
            if (txt != null)
                txt.Focus();

            //set up parameter values
            ListViewItem item = e.Item as ListViewItem;
            var userInfoList = UserInfo.UserInfoGetByUserID(UserID);
            UserInformation = userInfoList.FirstOrDefault();
            var user = UserInformation.UserID;
            string firstName = (item.FindControl("txtFriendFirstName") as TextBox).Text.ToString();
            string lastName = (item.FindControl("txtFriendLastName") as TextBox).Text.ToString();
            string eMail = (item.FindControl("txtFriendEmail") as TextBox).Text.ToString();

            try
            {
                //code to be inserted into DB
                srcNewInvite.InsertParameters["FriendID"].DefaultValue = "0";
                srcNewInvite.InsertParameters["User"].DefaultValue = user.ToString();
                srcNewInvite.InsertParameters["FirstName"].DefaultValue = firstName;
                srcNewInvite.InsertParameters["LastName"].DefaultValue = lastName;
                srcNewInvite.InsertParameters["Email"].DefaultValue = eMail;
                srcNewInvite.InsertParameters["Date"].DefaultValue = DateTime.Now.ToString();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                EmailNewInvitee(firstName, lastName, eMail);

                //concatenate these values and make them as a comma-separated string
                string concatenatedValue = firstName + "," + lastName + "," + eMail;
                btnDummy.CommandArgument = concatenatedValue;
                //show success message by programatically "clicking" hidden button
                //trigger the button click event
                btnDummy_Click(this.btnDummy, e);
                pnlMain.Visible = false;
                pnlNewInviteSuccess.Visible = true;
            }
        }
    }

    protected void btnDummy_Click(Object sender, EventArgs e)
{
        //mpeNewInviteSuccess.Show();
        //create object of button from sender
         Button button = sender as Button;

        //get command argument
        string cmdArgument = button.CommandArgument;

        //split command argument based on comma separator and convert to a list
         List<string> lstPassedValues = new List<string>(cmdArgument.Split(','));

        ListView lsv = Helpers.FindChild(Page, "lsvNewInvite") as ListView;

        //create successful message from list
        string SuccessMsg = "Success! Your invitation was sent to:<br><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + lstPassedValues[0] + " " + lstPassedValues[1] + " (" + lstPassedValues[2] + "</b>)";
        lblNewInviteSuccess.Text = SuccessMsg;
        //assign TargetControl id of ModalPopUpExtender to btnDummy
        mpeNewInviteSuccess.TargetControlID = "btnDummy";
        //show ModalPopup Extender
        mpeNewInviteSuccess.Show();
    }

This are two things I tried at the end of the btnDummy_Click event, but they didn't work:

        Response.Redirect(Request.Url.AbsoluteUri);        

        ListView lsv = Helpers.FindChild(Page, "lsvNewInvite") as ListView;
        if (lsv != null)
        {
            TextBox txt = Helpers.FindChild(lsv, "txtFriendFirstName") as TextBox;
            if (txt != null)
                txt.Focus();
        }





Viewing all articles
Browse latest Browse all 5678

Trending Articles