Web Forms :: 2 Instances Of A User Control On The Same Page Causing Page_Loads To Fire On Both?
Jan 12, 2011
I've created a User Control (.ascx), which has a dropdown. When an item is selected, it uses some model classes to pull back a set of data which it then dynamically displays as a list of checkboxes in a panel control.
When I add one to the page, it works very well indeed.
However, when I add another I get this behaviour:
1. Select an item from the first dropdown, the checkboxes appear underneath ok.
2. Select an item from the second dropdown, the new lot of checkboxes appear ok, but the first lot disappear.
I have built a User Control in VB which displays two gridviews and allows a user to select an item in the first gridview and display multiple rows in the second grid with the key of the selected item from the first. The data to be displayed is passed to the User Control as a datatable object via a public property of the User Control.
The user control works perfectly, but to allow the the subs in the codebehind of the User Control to access the data set when the user control is initialised, I have declared them as "Private Shared".
Having got everything to work, I now want to display multiple instances of the same User Control with different datasets.
However, because my data objects are defined as "Private Shared" each instance of the user control is overwriting the data of the others.
I can fix this problem by removing the "Shared" keyword, and have also tried setting them to "Protected" instead but then my variables expire after being set and contain "Nothing" when I get to the "RowCommand" event in the Code Behind.
I'm sure I must be doing something stupid, because surely the whole idea of User Controls is to make reusable code drven by parameters.
for obvious reasons using master page instead of iframes is good in my view but the current project which is on Framework 1.1 has some some limitations to do any modifications as client is already using some 3rd party controls. Now, the issue i am facing is with page load event which is firing twice. see the below html code.
from the above code when eFolderTree.aspx is called with iframe "TreeAppFrame", the "page load" event in eFolderTree.aspx.vb is firing twice. I debugged for the issue and found that this is happening because of iframe "primaryAppFrame" which is calling "SiteFolder/ShowSiteFolderTable.aspx?Site=<%=sSiteId%>". when commenting the page reference "ShowSiteFolderTable.aspx?Site=<%=sSiteId%>" in iframe "PrimaryAppFrame", this is working correctly. What else do i need to do, to make sure that page load event fires only once in page "eFolderTree.aspx.vb"
for obvious reasons using master page instead of iframes is good in my view but the current project which is on Framework 1.1 has some some limitations to do any modifications as client is already using some 3rd party controls.Now, the issue i am facing is with page load event which is firing twice. Please see the below html code.
from the above code when eFolderTree.aspx is called with iframe "TreeAppFrame", the "page load" event in eFolderTree.aspx.vb is firing twice. I debugged for the issue and found that this is happening because of iframe "primaryAppFrame" which is calling "SiteFolder/ShowSiteFolderTable.aspx?Site=<%=sSiteId%>". when commenting the page reference "ShowSiteFolderTable.aspx?Site=<%=sSiteId%>" in frame "PrimaryAppFrame", this is working correctly.What else do i need to do, to make sure that page load event fires only once in page "eFolderTree.aspx.vb" ?
In my default.aspx page I have a PlaceHolder control within an UpdatePanel. In this placeholder control I will dynamically load a web user control, which is just a form with a submit button. On this user control, I have the form within an update panel and I have the "Submit" button's Click Event added to the triggers.
When I submit the form, the UpdatePanel on the web user control nor the update panel on the default.aspx page are capturing the post back, thus causing a full post back which refreshes my page.
how to capture this post so its rendered in Ajax and not a full post back?
I have a need to improve the asthetics of the standard buttons .net churns out. I am fully aware of how to do this using css but I can only really style the button if I add a span element inside the button. Luckily the link button allows this so I have got the following which for usability i have put inside a user control.
I have exposed elements so that I can set values from within my aspx.cs page, these are text, command name, command argument, ccc class etc.
As it is a generic control, I have added OnCommand='Button_Click" which fires the event in the control itself. The Button_Click event calls a method ButtonControls passing associated command name and arguments across. ButtonControls uses the name to call the appropriate function.
As these are all very generic buttons, so far so good, but I have a need to trigger button events that may not be generic i.e on a control I have buttons that do something very specific to that control. I also have a requirement to call functions which relate to specific controls on the aspx page. I have created a user control which encapsulates the link button control.
I have a user control with linkbuttons (used for paging) and a repeater inside an update panel. The paging works correctly, but is causing a full page postback every time I click through to the next page.
The update panel looks like this:
So far, I have tried adding an async postback trigger for the user control, which does cause an async postback but does not update the rest of the text in the update panel. In otherwords, the async postback occurs and the next page shows up, but the original text in the repeater is there as well just below it.
I have also confirmed that I have IDS set on my linkbuttons, since that can trigger a full postback inside an update panel.
I have tried changing the update panel mode (Always, Conditional, ChildrenAsTriggers, etc.).
None of it makes a difference - the only thing that actually causes an async postback is to use the trigger, but then the rest of the content in the update panel is not updated, so I get duplicate content.
I have a user control that I place on a page severl times. When I make a selection on a ddl in one one control the SelectedIndexChanged event fires for all the control on the page for that ddl. So I get duplication of an insert that I do. Is there a ay to make sure these events are isolated so this doesn't happen.
I have an ASP.NET page inside of an ASP.NET Master page, and inside the page I have two instances of the same web user control. I have given them different IDs, but when I click a button on the first user control it causes the second user control to do the expected activity and the first one does nothing. Is there something I need to do to make sure that the controls don't get confused?
Is it possible to do this? Or do I need to make a server control for this functionality? I have it being able to be set in the Page_Init, but I'd like to make it as similar to actual controls as possible. Also, if it is possible to access via the Events section under Properties, that would be good and 2. I am trying to register the web user control as an AsyncPostbackTrigger for another UpdatePanel. With the previous question in mind, is it also possible to set this via the GUI, or does this need to be set programmatically as well?
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 am stuck into a problem, i have a user control ProductListing.ascx that contains ListView binded to an object datasource, SelectMethod and SelectCountmethod are provided as well. Everything works fine but the problem started when i add another user control declarativlly Filter.ascx in the productListing.ascx. I want to assign value to a public property MaxPrice in Filter.ascx. I am trying to set this property in the SelectMethod of ObjectDataSource. Usercontrol "Filter.ascx" throws null reference exception when i try to set its MaxPrice Property.
I tried to acced the usercontrol in Databind method of ListView , it is accessible here but viewstate is empty at this point, i saved the value in viewstate in SelectMethod of objectDatasource but i cant access viewstate in ListView Databind. Its empty. Its a simple code and no rewriting to viewstate elsewhere.
Important: My Codebehind files are in a seperate project and .ascx files in seperate project
I have usercontrol which has required field validation in it. I have 2 instances of this usercontrol in single web page . Now if I click button on first usercontrol the validation messages are fired for 2 user controls. But only the required fields of that user control has to be fired.
I have a simple search user control that consists of a textbox. The textbox's onchanged event appends the entered text to another page address and response.redirects to that page. The target page reads the query parameter and displays the results. Works great the first time a search term is entered. The problem comes if I immediately enter another search term, instead of refreshing the search results page with the new query parameter, it jumps back to my default.aspx page. I'm not sure where its getting that as an address to redirect to, the only control with default.aspx as a target is a imagebutton on my master page. I've tried turing off the autopostback on the textbox but it didn't help the problem.
A little confused on something. I have a User Control in a master page. In the User Control there are image buttons. when I try to wire any click event even to say update a label in the User Control itself, nothing gets updated.
It is as if the postback is not handled at all.
What I want to do is click the image button in the User Control and then change a value in the master page. This could happen a few ways but for example it could update a public property or a control itself like a textbox or label.
I have a user control with two drop down, on selection change of first dropdown second dropdown should get populated. Now when I place this user control in a aspx file, I need to access the second dropdown value on change of send dropdown .
eg: in ascx file
Department drop down and employee dropdown. on change of department dropdown, employee dropdown should populate. (which is working fine for me)
in aspx.cs file
on change of employee dropdown, I need to get the employee id and so some other operation. (I am struggling here)
Is there any way where I can fire usercontrol event from aspx.cs file?
I've run into a problem with one of my web sites and I am having trouble figuring out the problem and a good solution. This is my scenario: I have a user control that displays a slideshow with images and some text that changes every fifteen seconds. To do this, I have an update panel that contains a timer control with an interval of 15000. It calls a method called slideshowTimer_Tick in the codebehind. The web page that contains this user control is a relatively simple page; no update panels or timers, just divs.
The problem I have is that if I have two of these user controls on the page, the tick event only fires for the first control. It never fires for the second control, although the control is full initialized otherwise.
I have a datalist that loops thru cart items. Within the datalist template I call a user control that has a small form that gets repeated for each item. When this control is called outside of the datalist, the form submits fine, but when called within the datalist the button has no event action. I've tried adding an event handler to ItemDataBound of the datalist, but still no event action. How can I get my form to submit?
I am fairly new to the asp.net and experimenting with it to learn the page life cycle. Here is a problem that I have been unable to resolve for past few days.I have a hosting page (.aspx). Then I have two user controls (.ascx). The page has a place holder control in which it loads the user controls one at a time based on the application flow. First user control is loaded on application start up. It has a "continue" button. Continue button click loads the Second user control that has two buttons - "Back" and "Submit". Obviously the "Back" button should load the first user control again and Submit button should submit the form data.
It seems when I try to dynamically create multiple instances of a User Control, I get an Object Reference Not Set To An Instance Of An Object error on any ASP control that I'm using in that User Control
Here's the class where I'm creating them.
Am I able to successfully refer to a panel on the page that I'm calling this routine from simply by ByVal ... As Panel, or should I use HttpContext?
This code is identical to code in another user control where the parent is not a user control and that page works fine, but on this page the Validator doesn't fire and the Foo_ItemCommand method fires instead. I tried searching Google and StackOverFlow but haven't been able to find anything that helps.