C# - Viewstate With Dynamically Loaded Control
Feb 16, 2011
I am having issues with my dynamically loaded control's events.Here is how I am loading the control:
protected void Page_Load(object sender, EventArgs e)
{
LoadSubPageEditTemplate();
}
protected void LoadSubPageEditTemplate()
{
pnlPageTemplate.Controls.Clear();
BaseOfferAdmin adminControl = (BaseOfferAdmin)this.LoadControl("~/Controls/SingleOfferAdmin.ascx");
if (adminControl != null)
{
adminControl.ID = "Control_ID"
pnlPageTemplate.Controls.Add(adminControl);
}
}
}
The LoadSubPageEditTemplate() is also fired from a button event on the page, since I have to update it after the button event has executed.
The control loads perfectly, I have tested it with a basic button and the postback fires as expected. However, I am getting weird results with CheckBoxes.
<asp:CheckBox runat="server" ID="cbOptionalAction" Text="CheckBox" AutoPostBack="true" OnCheckedChanged="cbOptionalAction_CheckChanged" />
The CheckedChanged event only fires when the Checkbox is checked, which I guess means there is some issue with my control viewstate. If I have multiple checkboxes on the page, and one creates a postback, the checkchanged event is fired for each checkbox that is checked.
View 1 Replies
Similar Messages:
Feb 12, 2010
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);
}
View 4 Replies
Oct 9, 2010
Now here is the weird thing. First i am running it locally on the built in vs2008 web server.I load my control in fine, do a postback from a linkbutton, locally on my machine it all works fine, no issue.However when it goes onto my host, it falls over with the message:
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.Now i also load controls dynamically and use postbacks and things in the admin area of the site...and that works fine, however my front end just keeps failing? See the code behing below:
[Code]....
View 1 Replies
Jan 20, 2011
I read this article first to try to solve this issue, but I am already loading the controls in the Init phase of the page, yet viewstate is not persisting. Any ideas as to why? (Of note is that this is for a custom module in DNN and I do have some AJAX update panels on the page, though this section is not within an update panel, for what it's worth.)
As an overview of what I've got:
1. LoadControl.ascx - based on reading query string parameters, determines whether to load the master or the detail .ascx.
2. Master.ascx
3. Detail.ascx
In my master control I dynamically load either a master or detail sub-control in the page_Init. The detail page has a treeview control and then uses a multi-view control to display the panel associated with the depth of the node selected on the tree. On the panel being displayed I have a cascading ddl within a detailsview control which initiates a postback to select the child ddl based on the parent ddl selection. However, when the page refreshes after the postback, both ddls have resorted to their default selection.
What is interesting however, and I just realized this as I am typing, is that the Treeview is populated when the page comes back from the postback, so that is only possible if viewstate is being persisted right? (See the page_load code and you'll see that Call PopulateRootLevel(intTreeUserID) which populates the treeview, is not called on postbacks....hmmm.
Any ideas as to why the treeview maintains viewstate but not my ddls???? But though the tree is populated, I do have to explicitly select the node again and set the panel that the detailsview control is on to visible again too....
Here is the dynamically loaded control code:
[Code]....
And in the Detail.ascx page load I've got:
[Code]....
[Code]....
View 6 Replies
Jan 14, 2011
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?
View 6 Replies
Jul 31, 2010
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'll use a small code for example.
Member.ascx page:
[Code]....
View 1 Replies
Nov 5, 2010
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.
View 4 Replies
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?
View 1 Replies
Oct 26, 2010
My main file is messages.aspx and i am loading a UC names message_inbox.ascx dynamically as:
SiteUserControls_Message_MessageInbox InboxUC = Page.Load("message_inbox.ascx") as
SiteUserControls_Message_MessageInbox
Now in my user control ("message_inbox.ascx") i have a various events which i am combining in one group event :
public void ForwardLinkButton_OnClick(object sender, EventArgs e)
View 7 Replies
Feb 23, 2010
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);
}
}
View 1 Replies
Jan 6, 2010
[Code]....
Once the template is loaded and cast back to the TabHeader class, it's null. How can I load that control, set the properties, and use it as the template? Or is the only way to go about doing this to create a custom class?
View 2 Replies
Jun 11, 2012
trigger dynamically loaded usercontrols click event?
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.
View 1 Replies
Mar 11, 2011
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.
[Code]....
And the following is UC 2 the is being loaded:
[Code]....
[Code]....
View 6 Replies
Sep 10, 2010
I have a page that contains a custom tab control. When you click different tabs, it does a an ajax callback. During that ajax call, the code dynamically loads a different control based on which tab was clicked, then adds it to the appropriate tab. So basically I have some code that does a switch statement, uses LoadControl(), then adds the control in.
The issue I'm having is that none of the javascript within each of those controls that gets loaded is getting registered on the page. Based on this thread:
[URL]
I thought I just had to switch from using Page.ClientScript.RegisterClientScriptBlock to ScriptManager.RegisterClientScriptBlock. I did that, but still nothing. Am I misunderstanding something about the ScriptManager? I want the javascript to be registered from within the dynamically loaded control, which happens to be loaded during an AJAX call.
View 1 Replies
Jul 31, 2010
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().
View 1 Replies
Jun 17, 2013
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:
System.Web.UI.HtmlControls.HtmlGenericControl js = new System.Web.UI.HtmlControls.HtmlGenericControl("script");
js.Attributes["type"] = "text/javascript";
js.Attributes["src"] = "../../js/DatesJavaScript.js";
Page.Header.Controls.Add(js);
but it is not working.
View 1 Replies
Feb 27, 2011
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:
[Code]....
View 2 Replies
Jun 4, 2010
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:
javascript:__doPostBack('dnn$ctr498$AssignmentsList$rptAssignments$ctl04$ctl00$lbnUpdate','')
View 3 Replies
Apr 1, 2011
find my aspx and codebind files, I dont understand why am I unable to see the textboxes on my page once the code is deployed.ascx code
<asp:DropDownList ID="DropDownList1" runat="server"
onselectedindexchanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true" >
<asp:ListItem Text="one" Enabled="true" Value="1" Selected="True"></asp:ListItem>
<asp:ListItem Text="two" Enabled="true" Value="2" ></asp:ListItem>
</asp:DropDownList>
I would like to get the textbox dynamically loaded at the change of dropdown box and get the values entered in the textboxes into the result textbox.Once i change the dropdown box, i get the texboxes, but when I click the button , the textboxes disappear..
[Code]....
View 2 Replies
Jan 23, 2010
i am facing some problem with Menu item highlighting on user selection.
I am loading all menu items from database, I used
StaticMenuItemStyle CssClass="Item"
StaticSelectedStyle CssClass="ItemSelected"
StaticHoverStyle CssClass="ItemHover"
and
DynamicSelectedStyle CssClass="ItemSelected"
But it is not working for me.
View 1 Replies
Oct 25, 2010
My aspx has a placeholder I am dynamically loading a user control into the placeholder
like this:
Control dynamicControl = Placeholder1.Page.LoadControl("~/SiteUserControls/Message/MessageInbox.ascx");
View 5 Replies
Jan 13, 2010
I'm developing an ASP.NET Web application with WebForms and C#.
I have this aspx page:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div id="divBody">
<div id="divHeader">
<asp:Button ID="Edit" runat="server" Text="Editar" onclick="Edit_Click" />
</div>
<div id="leftColumn">
<asp:UpdatePanel ID="UpdatePanelLeft" runat="server">
<ContentTemplate>
<asp:Label ID="TryText" runat="server"></asp:Label>
<asp:TreeView ID="DestinationTree" runat="server" ImageSet="Simple">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD"
HorizontalPadding="0px" VerticalPadding="0px" />
<Nodes>
<asp:TreeNode Text="Raiz" Value="Raiz">
<asp:TreeNode Text="Destino_1" Value="Destino_1">
<asp:TreeNode Text="Punto_1_1" Value="Punto_1_1">
<asp:TreeNode Text="Contenido_1_1_1" Value="Contenido_1_1_1"></asp:TreeNode>
<asp:TreeNode Text="Contenido_1_1_2" Value="Contenido_1_1_2"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="Punto_1_2" Value="Punto_1_2">
<asp:TreeNode Text="Contenido_1_2_1" Value="Contenido_1_2_1"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="Destino_2" Value="Destino_2">
<asp:TreeNode Text="Punto_2_1" Value="Punto_2_1"></asp:TreeNode>
<asp:TreeNode Text="Punto_2_2" Value="Punto_2_2">
<asp:TreeNode Text="Contenido_2_2_1" Value="Contenido_2_2_1"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black"
HorizontalPadding="0px" NodeSpacing="0px" VerticalPadding="0px" />
</asp:TreeView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div id="rightColumn">
<asp:UpdatePanel ID="UpdatePanelRight" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Edit" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</div>
</div>
</form>
</body>
It is a header with two columns: On left column there is a TreeView, and on the left there is nothing (now there is a label to try the thing that I want to do).
When user select a node on treeview a click on Edit button. Code for click event is:
protected void Edit_Click(object sender, EventArgs e)
{
if ((DestinationTree.SelectedNode != null) &&
(DestinationTree.SelectedNode.Depth > 0))
{
BaseControl baseControl = new BaseControl();
UpdatePanelRight.ContentTemplateContainer.Controls.Clear();
switch (DestinationTree.SelectedNode.Depth)
{
case 1:
baseControl = (BaseControl)LoadControl("~/DynamicControls/Control1.ascx");
break;
case 2:
baseControl = (BaseControl)LoadControl("~/DynamicControls/Control2.ascx");
break;
case 3:
baseControl = (BaseControl)LoadControl("~/DynamicControls/Control3.ascx");
break;
}
UpdatePanelRight.ContentTemplateContainer.Controls.Add(baseControl);
}
}
Depending on node selected depth is going to load a custom control dynamically. It works, but when the user select another node on treeview, the original label is reloaded on right column.
How can I prevent this?
View 2 Replies
Jan 13, 2010
I'm developing an ASP.NET Web application with WebForms and C#.
I have this aspx page:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div id="divBody">
<div id="divHeader">
<asp:Button ID="Edit" runat="server" Text="Editar" onclick="Edit_Click" />
</div>
<div id="leftColumn">
<asp:UpdatePanel ID="UpdatePanelLeft" runat="server">
<ContentTemplate>
<asp:Label ID="TryText" runat="server"></asp:Label>
<asp:TreeView ID="DestinationTree" runat="server" ImageSet="Simple">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD"
HorizontalPadding="0px" VerticalPadding="0px" />
<Nodes>
<asp:TreeNode Text="Raiz" Value="Raiz">
<asp:TreeNode Text="Destino_1" Value="Destino_1">
<asp:TreeNode Text="Punto_1_1" Value="Punto_1_1">
<asp:TreeNode Text="Contenido_1_1_1" Value="Contenido_1_1_1"></asp:TreeNode>
<asp:TreeNode Text="Contenido_1_1_2" Value="Contenido_1_1_2"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="Punto_1_2" Value="Punto_1_2">
<asp:TreeNode Text="Contenido_1_2_1" Value="Contenido_1_2_1"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="Destino_2" Value="Destino_2">
<asp:TreeNode Text="Punto_2_1" Value="Punto_2_1"></asp:TreeNode>
<asp:TreeNode Text="Punto_2_2" Value="Punto_2_2">
<asp:TreeNode Text="Contenido_2_2_1" Value="Contenido_2_2_1"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black"
HorizontalPadding="0px" NodeSpacing="0px" VerticalPadding="0px" />
</asp:TreeView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div id="rightColumn">
<asp:UpdatePanel ID="UpdatePanelRight" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Edit" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</div>
</div>
</form>
</body>
It is a header with two columns: On left column there is a TreeView, and on the left there is nothing (now there is a label to try the thing that I want to do).
When user select a node on treeview a click on Edit button. Code for click event is:
protected void Edit_Click(object sender, EventArgs e)
{
if ((DestinationTree.SelectedNode != null) &&
(DestinationTree.SelectedNode.Depth > 0))
{
BaseControl baseControl = new BaseControl();
UpdatePanelRight.ContentTemplateContainer.Controls.Clear();
switch (DestinationTree.SelectedNode.Depth)
{
case 1:
baseControl = (BaseControl)LoadControl("~/DynamicControls/Control1.ascx");
break;
case 2:
baseControl = (BaseControl)LoadControl("~/DynamicControls/Control2.ascx");
break;
case 3:
baseControl = (BaseControl)LoadControl("~/DynamicControls/Control3.ascx");
break;
}
UpdatePanelRight.ContentTemplateContainer.Controls.Add(baseControl);
}
}
Depending on node selected depth is going to load a custom control dynamically. It works, but when the user select another node on treeview, the original label is reloaded on right column.
View 1 Replies
Sep 19, 2010
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.
View 2 Replies
Jun 21, 2010
I am trying to dynamically load query form as a user control and build a sql statement based on user selection. I have a dropdownbox for Tablename, FieldName, ConditionalOperators and Value Field. Once the user makes a choice and causes a postback I loose my QueryForm (UserControl) and the selection Changed event never gets fired. I tried reloading the QueryForm on Page Init, still no luck.
View 5 Replies