AJAX :: Odd Behavior On Setting Focus In User Control With Update Panel?
Nov 9, 2010
I'm having a bit of an issue in my ASP.Net application moving focus from a textbox in one user control to a text box in the next user control on the page after postback. I've searched high and low over the last several days to find a solution but, for whatever reason, have been unable to do so.
I have a page that has user controls loaded dynamically to allow a user to enter data.The number and type of user controls loaded to the page is determined at run time based on a database query.It is possible than many controls of the same type can be loaded. Each user control has its own update panel. Within the update panel of each control is a regular asp panel. Inside of the regular panel there are at least 2 server controls (any other controls that may exist in the user control are not affected by this issue) - a text box and a button.The defaultbutton property of the regular panel is set to the ID of the button within the user control. The desired behavior is to allow the user to enter data into the textbox on one user control hit enter to save the data on that user control the application will set focus to the textbox of the next user control on the page after the data from the "current" user control has been saved. Other considerations;
The application uses master pages. We make extensive use of ajax and the ajaxtoolkit in the application. I am using Visual Studio 2010 and .Net 4 The issue - when first entering the page, one can enter data into the first textbox and press the enter key. Data from "current" user control is correctly saved and focus is correctly moved to the next user control on the page.
Data can be entered into the textbox of "new" user control and when the enter key is pressed, the data is correctly save. The focus appears to move correctly to the next user control on the page.Data cannot be entered into the textbox of the control. Pressing the enter key will not save the data (because none was entered) but the focus will move to the textbox of the next user control on the page.
Data can be entered into the textbox of the user control. When the enter key is pressed, the data is correctly saved and the focus appears to move correctly to the textbox of the next control on the pageBasically, steps 3 and 4 are repeated until the end of the user controls on the page, alternating between being able to enter data and not. Other items of note When one is able to enter data into the textbox of a user control, one can correctly tab through the textboxes of each user control until the end of the page When one is not able to enter data into the textbox of a user control, pressing the tab key will take the focus to the address bar of the browser.
I created a much simplified example of the scenario described above and was able to consistently reproduce the "bad" focus behavior. All of the ajax toolkit controls and code where stripped out of the sample to rule the toolkit out as a cause. The behavior still occurs without the toolkit.
I am including the code for default.aspx and WebUserControl1.ascx.
I have a user control, that has an update panel and update progress control in it.
I use this user control in more than 1 location on the same page.... problem is, when ucA posts back, I see the update progress control for both ucA and ucB. I assume this is because it is a user control and the update panel and progress are named the same?
Either way - how do I make it so that the update progress only displays for the proper user control?
I've exempted the irrelevant bits of code. Essentially, I am trying to change the URL of an image control inside of an update panel inside of a custom user control from a function called inside an update panel from my main page. Using UpdatePanel.Update() isn't working: I end up waiting for the next full page POST to occur before all the updates I make to CustomControl from buttons within the main page's update panel are visible. I verified that Update() was being called via the debugger: there are no issues in that department.
Here, you can see Custom Control and the Button declared. The button is in an update panel to avoid giving a full POST and causing the whole page to reload.
This control stores images within their own seperate update panels because rerendering the images is very slow (it requires processing arrays of millions of datapoints) and the user only ever needs to modify one image at a time. I'm using Image1 as an example.
I have 2 user controls. The first user control generates custom paging and assigns the output as a string literal. The second user control is a simple repeater which uses values from the paging control via a query string to decide which relevant chunk of data to retrn.
The custom paging control is embeded in the custom reapeater control. In my my page, I simply call the customer erpeater control and everything works treat.I now want to add update panels to this but I can't think where to start.
I have block of code that consists of a textbox a button and a dropdown. The text entered in the text box filters the dropdownlist when the user clicks the button. The Ajax works great when it is in a simple page but if I put the same code in a User control I get flicker.
I used Ajax collapsible extenders (1 to 9) with formviews in each of them on a web form.
They are all collapsed by default. If the user enters data in collapsible 5 formview and submits data, the page refreshes back to the top of the page (where the collapsible 1 is positioned). I would like the focus to stay in the region the user is working (even after insert/submit operations). How can I do this.
I am hosting a Windows User Control in my web page using <object> tag. Everything works fine when the control is outside the updatepanel and is independent of other web controls but when I move the control inside the update panel, it doen't load the user control properly.
why it doesn't render the control properly and what can I do to fix it?
I tried moving the user control outside the update panel but since this user control is shown/hidden dynamically and is rendered based on other web controls which are inside an Update Panel, the user control is not shown at all.
I've got a user control that is displayed via a PopupControlExtender. The user control is a GridView that dynamically adds columns to the control to display the results of a SELECT statement. The PopupControlExtender correctly displays the control and the control displays the neccessary columns. However, when the control is first displayed, the column widths are ignored, despite that they are explicity set. If the control is displayed and then hidden, the column widths are acknowledged the next time the control is displayed.
I have two Main Tabs and in a TabContainer.I have 5 Second Level Tab Panels under Main Tabs.Two MainTabs work as mode: find and work:The default is Find Mode with First Tab visible.the user selects some field and the result is displayed in the same Panel in a GridView.When the user views the result it is displayed in the second TabPanel of the Second Level Tab which is then set to visible while other 3 tabs are still invisible.I want to go back to the Find mode and have it in the orignal state.Same thing with the Main Tabs: When I am in work mode: the other 3 tabs are visible and the previous two Tabs are invisible.When I want to go back to Find Mode. I want to retain the what the user had selected in the 2nd level Tabs before moving to the Work panel.
I am fixing issues in a project where I was not able to figure out a solution for the below problem. There are multiple user controls in Main.aspx page. First one is header.ascx which is added directly in .aspx page. and the others are added dynamically from Page_Init event. Basing on the hyperlink clicked from the menu on the left side of the main page, the respective user control is displayed.
Now, If I try to add script-manager/update panel inside any of the dynamic user controls, the respective user control page throws error. I have noticed that the header.ascx control is using scriptmanager. Is it creating the problem? How to handle this kind of issue?
Can anyone give me some VB to set focus to a control using the "FindControl" method. MyTextbox.focus() is not good enough because, for instance, I have a textbox called "Username" in the "CreateNewUserWizard" control which is within a Contentplaceholder on a child page so typing in "Username.focus()" does not work on the Page_Load event because Username simply does not have a Focus property.
I have a user control in a master page with two drop down lists. When the user selects an item out of either ddl, I want to load a specific user control inside an update panel on the content page. I can't figure out how to get the user control to trigger the update panel.