Web Forms :: Pass Data From A Page To ASCX User Controls Loaded Dynamically?
Feb 7, 2010
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 have two files in my project. One is user control (popup) customerpicker.ascx and one is default.aspx page. In customerpicker I have dynamically generated gridview and 'select' column with SelectButton.
What I want is this: When I click on 'select' on random row in gridview, then I like to display value from selected row immediately (like ajax) to aspx.page. How it is possible?
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?
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); } }
I have a situation where I dynamically load one of twenty user controls at a time in an ASP.net web page. Based on much reading I've done, I understand that I am to reload the user control upon postback via the Page_Init event handler. This I've done and it seems to work fine.
But now I would like to wire up assorted controls in the user controls such that when the value of each is changed, an event is fired and the web page is notified. Here's an example of how I'm doing that:
userControl.NewData_Handler += new EventHandler(UserControl_NewData_Handler);
There's a problem though. Because the user control is being done in Page_Init (ie. before Page_Load) I don't believe that a line of code such as the one above can function yet.
So I'm wondering what the best practice to do this is. It occurred to me that perhaps I could execute the line in the Page_Load event handler but I'm not sure if that's correct or not.
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 load the content of some User Controls into my page with the use of jQuery. So I have this function that extracts the content from my User Control, and it works like a charm.
public string GetObjectHtml(string pathToControl) { // Create instance of the page control Page page = new Page(); // Create instance of the user control UserControl userControl = (UserControl)page.LoadControl(pathToControl); //Disabled ViewState- If required userControl.EnableViewState = false; //Form control is mandatory on page control to process User Controls HtmlForm form = new HtmlForm(); //Add user control to the form form.Controls.Add(userControl); //Add form to the page page.Controls.Add(form); //Write the control Html to text writer StringWriter textWriter = new StringWriter(); //execute page on server HttpContext.Current.Server.Execute(page, textWriter, false); // Clean up code and return html string html = CleanHtml(textWriter.ToString()); return html; }
But I would really like to send in some parameters into my User Control when I create it. Is this possible, and how can i do that?
I can see that LoadControl() can take some parameters with object[] parameters but im really not sure on how to use it.
For a "dashboard" module I need to dynamically load user controls based on criteria as the user enters the page (role, etc). The problem is that the events are not being fired at all from the controls
As I understand it I need to load the controls in the OnPreInit method of the dashboard page, however I cannot get a reference to the Placeholder control at this point of initialization (i.e. I get a NullReferenceException); trying to load the Placeholder dynamically via Page.FindControl gives me, ironically, a StackOverflowException.
I've tried loading the controls in PreRender and OnInit as well but the events in the controls are not wired up properly and will not fire.
I am following on my own solution to triggering fancybox from asp.net code-behind as here:
http://forums.asp.net/p/1577730/3966910.aspx
But this time I am stuck because my hidden_link control exists inside a dynamically loaded user control, and I do not know it's id, as the id's change to something like this:
I am using Literal1.Text = "<script>jQuery(document).ready(function() {$("a[id$='hidden_link2']").trigger('click');});</script>"; (which would find an <a> tag ending with hidden_link2) but this only triggers the fancybox for the first user control. How can I inject this script for the required <a> link only? Hope that makes sense.
I have a simple user control containing two text boxes which I am adding to placeholder on Button Click event. I am storing the number(count) of clicks in View state and running a loop using count to create all previously added user control. I am also adding IDs to each User control (appending "UC" and count). I have also checked in view source the ids are same each time they are created. I have another button which basically does an post back. I have EnableViewState enabled ="true" in all controlls all the way up to Page Level. My problem is that User Input does not persist on postback. Should this not be happening automatically for me?
From an ascx page, I click a link that opens a popup aspx page(child). That aspx page has a gridview with hyperklinks. When I click on one of the hyperlinks of my gridview, I want to pass the value in that cell to a textbox located on my ascx page(parent). I try using javascript , but I can't get it to work. here is my javascript code and the gridview code:
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 user control where is a textbox and button with PostBackUrl="two.aspx". This user control I have on a page one.aspx. When I click that button, on two.aspx I want to have access to the textbox from ascx control. PreviousPage.FindControl doesn't work. How to do that?
I'm dynamically loading a user control with a form view inside, when I'm trying to update the form view the user control disappears on the post back and update never happens;
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 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 page called main.apsx and on that page I have a multiview with a couple of view panes. In main.aspx I also have an have a buttons.ascx file with a few link buttons. When these buttons are clicked I want them to show the the selected view panels in multiview in main.aspx.
I cant seem to figure out where to put the action code for the link buttons. Do I put it into my buttons.ascx.cs file or into main.aspx.cs? I presume in buttons.ascx.cs, but if I do that, how will the buttons find the multiview control?
This is the code for on of my buttons in buttons.ascx.cs
[Code]....
When I run it like this is gives an error
The name 'MultiView1' does not exist in the current
I want to download all the pages from a gridview to excel, I have the code which is working. But the problem is that it gets the data only from the current page.
I tried making paging=false. But it doesnt work. And if i use databind it does not get any data from the gridview.
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 have an issue with gridview and ascx's inside. Into the item template I'm dynamically loading ascx files depending on the row hiddenfield value. Ascx control is then "opened" in panel with modalpopup extender. The issue is ascx control with ceratin programming logic behind does not postback in this scenario.
I have a page that loads a usercontrol dynamically. Depended on the user's actions, this control may be unloaded in Page_PreRender and a different control may be loaded instead. I am attempting to use the solution outlined by Mark DotNet Evans in this post: http://forums.asp.net/p/1491790/3814320.aspx
This all works great, except if the user clicks the refresh button in the browser just after the change of usercontrol. Then, I get an error
Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. ...
I assume the error is caused by the browser re-posting the request with the old viewstate that matched the control tree when the page was loaded, but no longer does. How can I prevent getting an error when the user reloads the page?