C# - Updating Parent Page From Dynamically Loaded User Control
Feb 20, 2011
Hosting page:
protected void Page_Load(object sender, EventArgs e)
{
LoadMyControl(Parameters); //Do it every page load to preserve it's state
}
protected void LoadMyControl(string parameters)
{
plchld.Controls.Clear();
Control userControl = LoadControl("TheUserControl.ascx");
userControl.ID = "userControl1";
plchld.Controls.Add(userControl);
}
Now inside this control, when a button is clicked I want to update ,let's say a Label on the hosting page.
What is the best way to do it? Custom event?
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?
Basically, I have a user control with a set of input controls such as textboxes and radio buttons. It also has a button along with these controls. What I want is that when the user clicks this particular button, the data entered in the input fields must get updated into a grid in the parent page.
I have user control that inherits a base control class and these user controls are loaded using the LoadControl method, I can't seem to figure out how to raise events from user controls to the page that are dynamically loaded this way. Here is the delegate and event in the base user control class.
public delegate void SomeChangeEventHandler(object sender , SomeChangeEventArgs e); public event SomeChangeEventHandler SomeChangeEvent; public virtual void OnSomeChanged(SomeChangeEventArgs e) { if (SomeChangeEvent != null) { SomeChangeEvent(this, e); } }
In a page , when I click a button 'showDialog' I am loading the user control dynamically in a dialog. I am linking to the event in the user control as explained below. The parent page is not receiving this event.
Button_Click(){ UseControl1 gc = dlg.LoadContent(:UserControl1.csx); gc.CausePostback += new EventHandler(execute_CausePostback());} execute_CausePostback(){ In UserControl class after clicking the submit button Submit_Click(){ saveRecord(); raise event CausePostBack();
I have created a web user control (MemberDetails.ascx) which is loaded dynamically on a page (Member.aspx) for my website. The control has some TextBoxes. I want to store the values inputted by a user in these TextBoxes to a database on the click event of a button that is on the Member.aspx page (i.e. not a part of user control).
I have created a user control that contains two asp calendar controls. I need to add this user control twice on the same asp page, let's say for Check in date and Check out date. Since the two are conflicting to each other when I add it twice statically, I now dynamically add them on button click so that each time only one control is loaded. The problem is, when I select a date on a calendar, it seems that the selection event is not happening at all. Of course, I am not getting any date.
I have a problem with ViewState. I have an aspx page that has a treeview on the left and an UpdatePanel with an ASP.NET Panel inside on the right. It is in that inner Panel where I load and unload dynamically user controls. I use that update panel to load dynamically controls.
I also made a custom control for my user controls because I need to pass some values from page. On that constructor I use ViewState to store these values.
The first time I load the user control I call its constructor with parameters. When I reload that user control on each postback I use its normal constructor.
My problem is I the values I've stored on ViewState has become null on successive postback.
Update:
This is a piece of my user control:
public class MyUserControl : System.Web.UI.UserControl { private int PKId { get { return ViewState["pkId"] as int; } set { ViewState["pkId"] = value; } } public MyUserControl(int pkId) { this.PKId = pkId; } ... }
I'm following this article to load controls dynamically: http://msdn.microsoft.com/en-us/magazine/cc748662.aspx#id0070065.
Second Update: I also set the same control ID when I load the user control at first time and on each reaload.
Maybe I can use another method to store these values like input hidden fields or Cache. I've choosen ViewState because I don't want to overload server with Session values for each user.
Third update:
I load the controls with this code:
System.Web.UI.UserControl baseControl = LoadControl(ucUrl) as System.Web.UI.UserControl; if (baseControl != null) { baseControl.ID = "DestinationUserControl"; PanelDestination.Controls.Add(baseControl); }
And reaload with this code:
DynamicControls.CreateDestination ud = this.LoadControl(TrackedUserControl) as DynamicControls.CreateDestination; if (ud != null) { ud.ID = "DestinationUserControl"; PanelDestination.Controls.Add(ud); }
What i did.........Created User Control like One.ascx with one button
<%@ Control Language="C#" AutoEventWireup="false" CodeFile="one.ascx.cs" Inherits="one" %> <asp:Label ID="Label1" runat="server" Text="Hello, this is My First User Control dynamically loaded :)"> </asp:Label><asp:Button ID="btnShow" runat="server" Text="Show" OnClick="btnShow_Click" /> On Code behind public void btnShow_Click(object sender, EventArgs e) {
[Code] .....
Fail to redirect user to google.com by clicking button which written in .ascx file.
I have a aspx page, default.aspx, with an user control in it. Inside the user control (UC 1) there is a DataGrid. When the DataGrid is loading data with ItemDataBound, I need to dynamically load another user control (UC 2) for each row in the DataGrid. UC 2 has a Button ( BTN )with an eventhandler associated with it in code behind.
User control loading is fine, and the Button, BTN, is there. However, when I click the Button, the eventhandler is not reached, not firing, even though the page does postback. I googled for this issues, and I know the dynamically loaded user controls need to be loaded every time the page is postback. In my case, it needs to be loaded each time the datagrid is doing ItemDataBound. I did it and even hook up the eventhandler with button click event each time when the user control is dynamically loaded. I set EnableViewState to true on the Page and controls.
The following is part of the code from UC 1, AcctPaymentDetail is UC 2 in the code.
I have a blank user control (child) and during Page_Load i create some text boxes and a button. I also add an event to the button.
I then load that user control dynamically from a placeholder in another usercontrol (parent). Both controls are rendered correctly but when i click on the button, the event isnt fired. how to handle the event?
Child code:
[code].....
If i use the child control directy (ie without the parent the control) the click event is raised and handled nicely. But when i use the parent control, the debugger wont even hit a breakpoint inside UpdateButton_Click().
I have a tab control on my page and on click of tab user control is loaded dynamically.I need to load the javascript file of that user control dynamically. I don't want to add the reference of my js file on parent page.so in my .ascx page load event i added:
I have a user control that is dynamically added to a placeholder control inside an update panel in my main page. The user control has a linkbutton where I try to handle its Command event. The first time the link button is clicked after the user control loads, the form posts back but the command event handler does not execute, although the user control is still on the screen. The second and subsequent times the link button is clicked it works perfectly. When the user control first loads and I mouse over the link button, the browser status bar says: javascript: __doPostBack('ctl08$lbTest',''). After the first click, when I mouseover the link button the browser status bar shows javascript:__doPostBack('ctl07$lbTest',''). Why the changed in id, I can't figure but it must be why it is not hitting the event handler the first time it's clicked. Here is the cs code that loads the user control:
I'm developing an ASP.NET application with C# and Ajax.I have a page that holds user controls loaded dynamically. I need to pass some data (integer values and some strings) to the user control that has been loaded dynamically.Now I use Session to pass these values, but I think I can use another way; something like VIEWSTATE or hidden input.What do you recommend me?The fact that I load the controls dynamically is important because controls are loaded on every postback, and I can't store any value on controls.
i would like to ask about how can i open user control page when i click a button on parent page, also, can i call parent's method from user control page and then refresh parent page?
I am trying to add dynamically a user control I created to an aspx page after it is loaded. I tried sending an ajax request to a handler that used RenderControl function and sent back the control's html. I appended it to the DOM using javascript.
The problem is that some of the controls must go through their Page_Load function and that doesn't happen when using RenderControl function.
I have written a user control that captures some user input and has a Save button to save it to the DB. I use a repeater to render a number of these controls on the page - imagine a list of multiple choice questions with a Save button by each question.
I am loading the user control inside the repeater's ItemDataBound event like this (code simplified):
[code]....
The problem is that when the Save button is clicked, the page posts back, but lbnUpdate_Click is not called. The Page_Load event of the page itself is called however.
I should mention that the repeater is part of a user control, and that user control is loaded inside another user control (this is a DotNetNuke site which makes heavy use of user controls). The Save button link looks like this:
I have to disable our parent page(Complete gray out and non functioning) when child page is loaded. Once I close child page then I could perform any action at my parent page.
I can not use Div at my parent page because it may be many page so i have to controlled it from child page only.
I have created one user control for changing the theme of the page where i have several buttons and on click of each button i am applying the theme of clicked buttons color and for that i have created several css files like red.css, blue.css , green.css etc.
now i want to apply this theme to the page but i am not able to do that from the user control as because i am not getting the stylesheet property in the page and thus i am not able to work further.
can anyone tell me how can i apply the theming from user control to the page its being called.?
I have a hidden field on my default.aspx page. Within default.aspx page I have a user control which has a label on it. I need the label to display the value on the hidden field. How can I go about this?
I am using a user control that I created (just a .cs file not an .ascx file), that does some magic and depending on a value generated by the control, I need it to do something on the parent page that is 'hosting' the control. It needs to call a method under certain circumstances (method is on the parent control).the control is placed on the parent page like so:
I'm dynamically creating buttons etc on the control itself but when a button is clicked, let's say for example that there's a text box on the control and if the value of the textbox is "bob" it needs to call a method on the page that's housing the control...how can I accomplish this?
I have a label on my master page (called mainMenu) that shows the number of items in a cart. The label wasn't getting updated when the cart was cleared until after an additional postback or redirect so I created a method on the master page called UpdateNumberOfItemsInCart to update the label text.
Using the MasterType directive on the Cart page allowing me to strongly type the master page, I can access the update method from the Cart page. There is a user control also named Cart that actually contains the 'clear cart' button so I setup an event on the user control also called UpdateNumberOfItemsInCart. I wire up the Cart control's event on the Cart page which then makes a call to Master.UpdateNumberOfItemsInCart();
So far so good except when I wrap the Cart control with an update panel the update to the cart count label doesn't happen.
I have a login control and at is nested 2 deep in a header control i.e Page --> Header Control --> Login Control. I cannot get a reference to the control on the page using FindControl. I want to be able to set the visible property of the control like
[code]....
I ended up using a recursive FindControl method to find the nested control.