Dynamic - Dynamically Loading Controls And Persistence?
Sep 1, 2010
I am loading a series of controls in the Page_Load event. However, I have to recreate those controls each page load, which means storing their data elsewhere. This is cumbersome.
protected void Page_Load(object sender, EventArgs e)
{
MyControl control = (MyControl)LoadControl(...);
control.Initialize(GlobalClass.controlData);
//^gives the control the data it had previously.
//Or use ViewState["controlData"] if serializable.
Controls.Add(control);
}
I feel like I should be using if (!IsPostBack) {}, but I don't know how, or why. In contrast, if I place the controls into the markup, then the controls seem to stay persistent. For example, a button in mark-up will remember any changes to its Text property (I think?).
<asp:Button ID="buttonText" runat="server"
Text="Text Segment" onclick="buttonText_Click" />
How do I maintain some sort of persistence with dynamically added controls, like controls added via mark-up? This would save me much work and frustration.
(I've coded for a small eternity, but the more I do ASP.NET, the more confused I become. Which is exactly the opposite of what how I understood learning to work :-P.)
View 2 Replies
Similar Messages:
Oct 15, 2010
I have a set of dynamically-created (IE: by code) controls on my web page. Depending on which options the user decides to go (Edit/New), those controls are re-created with the appropriate information (IE: "with values" with Edit, "without values" with New).
Here's the situation:
- I create my controls in InitComplete when it comes to save the data (both on Edit/New) contained within the controls.
- I create my controls in PreLoad when it comes to load them initially (Both on Edit/New) in order to avoid the ViewState to kick in.
However, despite creating the controls after the ViewState has been applied (technically), the controls still somehow retain the pre-postback's information. IE: if I have options 2 and 4 selected and I choose "New", which should show the options without being selected, they remain selected no matter what. And this is true despite changing their values in the PreLoad state. From my understanding, creating a control in this fashion and at that point in the page lifecycle should override any values the ViewState might have had for those controls. I have also tried to disable the parent's control viewstate (Table.EnableViewState = false) again, to no avail.
I've tried using the Me.ViewState.clear() and Me.ClearChildViewSate prior to loading the initial values as well, but again all for naught. I do understand that any control created after the Init phase of the lifecycle has to play "catchup" with the current state, however I would expect that clearing the ViewState prior to creating the controls would fix this issue. It doesn't seem to.
View 1 Replies
Mar 18, 2011
On a dashboard page I'm loading several controls dynamically; the controls always need to be loaded so there is no if (!Page.IsPostBack) code. The problem though is in that in the code-behind, we are using Request.Form.GetValues and a particular dropdown field's value is always null (presumably because the controls are being cleared and reloaded on a postback) and this is triggering an error later on in the page that expectes a value from this dropdown. I have to use Request.Form.GetValues because the page enables dynamically adding rows (each row containing 5+ HTML inputs) via Javascript.
If I check for postback, then the button event of the control does not fire at all but instead the dashboard page is reloaded, and no controls are loaded at all (i.e. the page is blank).
How do I get around this issue? I need to dynamically load the controls at all times, but I also need to retrieve the values via Request.Form.GetValues.
EDIT
Here's what the code looks like, roughly:
(Client-side HTML)
<table>
<tr>
<td align="center">
<select id="Class1" class="txtboxcomm" name="Class1" runat="server" />
<a href="javascript:classFinder('1')"> Look Up</a>
</td>
</tr>
</table>
<div id="action">
<asp:LinkButton ID="ibtnGetQuote" runat="server" OnClick="ibtnGetQuote_Click" CssClass="getQuote" AccessKey="G">Get Quote</asp:LinkButton>
</div>
(Server-side, in ibtnGetQuote_Click - this is actually a loop since user can append multiple rows; "i" is appended to the word "Class" to find the exact row)
IList<string> classes = this.GetFormValues("Class1");
// This will return null all the time...
private IList<string> GetFormValues(string clientID)
{
String[] values;
values = Request.Form.GetValues(clientID);
if (values == null)
{
Control ctl = FindControl(clientID); // uses built-in FindControl method
values = Request.Form.GetValues(ctl.ClientID);......
The original code was hardcoding the "ctl00$xx$xx" stuff, but the control may or may not be loaded so we cannot guarantee the name the control will get. In fact, I'm not even sure if this will work for all scenarios since only the FIRST control is a server control, the rest are just standard HTML controls so wouldn't have a "ClientID".
View 3 Replies
Jan 19, 2010
I have been playing around with loading user controls in a CMS style where I can change the position and order. I have come up with this...
[Code]....
It all works fairly well - but I have alot of propertys in my user control code behinds where I could inject values into the usercontrol from my base class.
I like the way I can position usercontrols from the DB, I even added a time and date section where they could be switched on and off per day or time.
If I make every user control access the DAL for the data, it means i will have one select per user control, which means including my bassclass I could have upto 15 selects (visits tot he DB) to make the front page. Though this does not seem to make a performance problem, I was wondering if there was a better way of doing this.
View 2 Replies
Dec 3, 2010
I am loading dynamic ascx controls into a placeholder using:
Control control = LoadControl([controlpath]);
PlaceHolder1.Controls.Add(control);
I need to pass the data to its public properties.
View 1 Replies
Apr 16, 2010
I need some on techniques to perform page redirect in asp.net. Which one is more recommended to use in asp.net?
Dynamically changed the src of the Iframe to difference aspx.
[code]....
View 1 Replies
Dec 27, 2010
I am trying to create my own website management framework similar to DNN/SiteFinity (only a mucho cut down version).
One of the big (but common) features is to be able to dynamically add user controls to provide additional functionality.
I would prefer to use a pre-compiled .NET "Web Application" over a dynamically compiled "Website".
What are the implications of using LoadControl method to dynamically add a user control for a pre-compiled web applications with specific regard to:
Session (preume I am using the stateserver)What happens to all the other users - will they be logged out?
Application pool recycling due to changes to some compilation??
I am not sure I have ever dynamically added a user control to a pre-compiled web applications as I have mainly been using "Websites" so I am making a large presumption that it will work because if the website is pre-compiled, does this mean the dynamically added user control will be dynamically compiled as required even though the site is pre-compiled?
EDIT
I also forgot to mention that the user controls will be outside of the application directory and so won't be published during web deploy - they will be uploaded via another website.
View 2 Replies
Nov 15, 2010
The web page I am trying to (slowly) build should allow users to add whichever user controls they want on their page, and order them whichever way they like. This is saved in a database.
So each user could have a different number of controls on the page.
This is the design code, at the minute the user controls are fixed and are not loaded dynamically. They user controls are stored in 'blocks' which look like widgets on the page and can be dragged about to different columns. For each user the layout is stored in the DB i.e. which blocks are in column 1 and which blocks in column 2 etc.
How could I change this so that it can create a 'block' div for each user control returned from the database and put the user control in that block and in the right column?
[Code]....
View 15 Replies
Jan 4, 2010
I have created a Web User Control (e.g, uc.ascx) which has a few HTML checkboxes in it (using Input Checkbox).
As uc.ascx is dynamically created in my webform page (e.g. page1.aspx), I discovered that the HTML checkboxes did not persist their "Checked" status. how I can make these HTML checkboxes persist?
View 1 Replies
Dec 16, 2010
I can't figure out how to get the legend to populate all the "strReason" and get the correct percents to show for each column. This is where I'm at right now.
[Code]....
View 1 Replies
Apr 17, 2010
I am using ASP.Net 2.0 with Ajax.
I am working on a pretty heavy page in an application and the scenario is:
There is a Tab control in the page, having four tabs. These tabs individually consist of different user controls and other asp controls. Most of these usercontrols in turn consist of other user controls. Every user control contains huge javaScript functions which validate them, populate controls and call web services.
What I am trying to achieve is to load only the Tab and its user controls on the page load and when the user clicks on a specific tab, load its contents (User controls) dynamically. Once that is done, I am setting the tab's postback to false to prevent loading it again once loaded.
I tried to achieve this by making the user controls in the other tabs - visible="false" in the markup and loading them from server side on some specific event. But that causes the javaScript functions in those user controls to give errors ('Object expected') when I go to that tab.
If I set the user controls in the other tabs to visible true, then no matter what; the page life cycle goes to each registered control and loads every subsequent control in that web user control which makes the main page slow (on loading and every postback).
The position of the Tab and the inner user controls is fixed. Although I am taking care that no data is populated unnecessarily on the page and user controls on hidden tabs, I dont want the tabs to get loaded altogether unless requested. If I load them on runtime, their corresponding javaScripts start giving errors.. note that I am not generating the controls on runtime, they exist in the page design. I just dont want to load them dynamically
View 4 Replies
Mar 2, 2010
First, I would like to apologize, the search on the site wasn't working, so I don't know if I'm missing an existing post or not.
I have a web page that uses a master page file. I am using a third party control from Component One(TabStrip), the tabs are rendered as links on the final page. When a tab(link) is clicked, I need to load the appropriate web user control associated with that tab. Each web user control has its own post backs and methods. I know that I can load the controls on the "SelectionChanged" event of the TabStrip control, but then any postback created by the web user control that is loaded causes the page to refresh and the control was never loaded in viewstate. So, I tried to put my procedure of loading the web user control into the page_init method. This would work, if I could read which link was clicked on from within the page_init method. I tried using a javascript function to run "onclick" of the tabs and within it setting the value of a hidden control. I have verified that the javascript works and that the hidden control's value is getting set correctly. When I get into the page_init method, the value of the hidden control is not readable.
I'm tying to understand the page lifecycle to the fullest, but I don't see what I'm missing here. I know that I need to load the web user controls in the page_init method in order to persist the page as a whole, but how can I get which tab(link) was clicked to know which control should be loaded?
View 5 Replies
Jun 22, 2010
I'm listing some controls at my web page dynamically, either I'm adding newline with Label's.
Label newLine = new Label();newLine.Text = "<br/>"; myPanel.Controls.Add(newLine);
How can I do it in a different way?
View 2 Replies
Feb 20, 2010
I am adding controls dynamically in my webpage.
I add them in onload method.
everything is working fine..
But I m a bit confused about how it works..
I have read in so many articles that all controls get their values from viewstate before load event. Then how my dynamically added controls get their values when i am adding them in OnLoad event ie after LoadPostData event.
View 2 Replies
Mar 14, 2011
Performance of Tree view control or any control. Load the data as per requirement. Display 100 records even if DB contains 2000 rows. Load as per user demand. How to implement this?
View 3 Replies
May 7, 2015
Load data while Scrolling Page down with jQuery AJAX and ASP.Net.
I want to implement same thing but want to get data base on User input and implement the same. How to write Store Procedure where i can use where clause.
View 1 Replies
Feb 11, 2011
I am trying to create a composite control - A textbox, gridview and a button. When I create the grid dynamically, I use my function GridViewDataBind() that will basically create the gridview at runtime and bind it with data. In this method, I add a blank column (first column for expand/collapse image), databound columns (using custom Itemtemplate), a placeholder, then a new html row/cell and a child gridview. I want to know how can I add these html rows/cols to my gridview. Here is the code:
[Code]....
Not sure if the approach is right and if I was able to explain my problem?
View 5 Replies
Jul 28, 2010
so I have this custom user control, just some data inside divs with a fancy css.
So inside my page I need to add it multiple times, and I do so in code behind within loop.
Now, this code doesn't work
[Code]....
and of course it works fine now. My questions would be - why? can I do it without pecifying file name and just creating control the normal way like in first example?:S
View 2 Replies
Jan 26, 2011
I have the following code in my <head>
<% if(Context.User.IsInRole("Reseller")) {%>
<link href="<%: themelocation %>" rel="stylesheet" type="text/css" />
<%} else {%>
<link href="<%= Url.Content("~/Content/custom-theme/jquery-ui-1.8.5.custom.css") %>" rel="stylesheet" type="text/css" />
<%} %>
The issue is with themelocation, which is declared just above this block of code - like so:
<%
var reseller = new Reseller();
var storeSettings = new StoreSettings();
var themelocation = "";
if (Context.User.Identity.IsAuthenticated)
{
var resellerRepository = new ResellerRepository();
reseller = resellerRepository.GetResellerByUsername(Context.User.Identity.Name);
var storeSettingsRepository = new StoreSettingsRepository();
storeSettings = storeSettingsRepository.GetStoreSettings((int) reseller.StoreSettingsID);
themelocation = storeSettings.Theme.StylesheetLocation;
}
%>
Setting a break point shows that themelocation holds the string I need, but when the page is run - it generates a 400 - Bad Request error, and the net tab in firebug reveals its looking for this:
http://localhost:50982/%3C%:%20themelocation%20%%3E
Where am I going wrong here? Why is it using the variable name, and not what it contains?
I'm using ASP.NET MVC2, and all of this code is located on my master page.
View 1 Replies
Mar 9, 2012
Right now I've got a large .aspx page - starts out loading tons of .css and .js files...
Code:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="AWCOffice.aspx.vb" Inherits="_AWCOffice" EnableViewState="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
[Code] ....
Then what follows is a large pile of javascript code - about 5800 lines of javascript code.
Code: <script type="text/javascript">
This is the main application. At the moment I like to keep it in the .aspx page because it's constantly changing and I don't want to worry about client caching and versioning.
After the JAVASCRIPT code comes the html - about 2000 lines of it.
Starts like this
Code:
</script>
</head>
<body>
<form id="form1" onsubmit="return false;" runat="server">
<div id="acs-system" class="acs-ddreflector acs-dddynamic">
<div id="acs-binder" class="noPrint">
[Code] ....
The DIV ACS-SYSTEM is the only visible area of this HTML.
The DIV ACS-POOL has a css style of display:none and holds template HTML that jQuery copies into the ACS-SYSTEM dom space as the app runs.
Here's the actual question.
Most of the 2000 lines of HTML in the ACS-POOL is customer specific - not all of my customers need all 2000 lines of this HTML. And as I add customers the nightmare of managing all this in one "SOURCE FILE" becomes daunting.
Never mind the wasted band width of giving all my customers all this HTML - even parts they do not need.
What kind of options do I have for breaking down and "dynamically" loading this in a more CUSTOMER-SPECIFIC fashion?
I think I could use jQuery to simply feed it from my "boot webservice" call - but if I can do it in a more HTML-fashion I would think that would be better.
I used vs 2008 for coding this and in my IDE here at the office I change the CONNECTION STRING in the web.config to point to different customer databases. Anything I can do in the WEB.CONFIG that the .aspx page can pickup???
View 14 Replies
Apr 2, 2010
I am writing a site with six pages that use the same 12 pieces of data for x number of people. The user always goes to a fixed page where I do all of the DB related work to get the 12 pieces of data for x number of people. However, I don't want to do the DB related work again as it is overhead intensive. So after the initial page I end up with something like this:
Person1, Data1, Data2,Data3,.......Data12
Person2, Data1, Data2, Data3........Data12
[code]...
I have been trying to figure out the best way to store the data so that I can use the data set throughout the remaining 5 pages. I thought of setting up an array within a class but I keep getting a null value when I try to access that class values (maybe I have it set up wrong). I thought using a session variable to store the array, but because it is multi dimensional I am having issues (again, most likely due to a lack of knowledge). I thought perhaps storing the array into a temp SQL table would be efficient, because then it would be a single read out to SQL to get the datatable containing the data back into the page, but that seems like a lot of work for something that should be easier.
View 5 Replies
Jan 20, 2011
I have a delete button in listview footer. I need to set dynamic text for this deletebutton and dynamically set the delete confirmation message also.Here is my code.
<asp:ListView ID="dlPictures" runat="server" RepeatDirection="Horizontal" DataKeyField="PictureId"
DataSourceID="OdsAlbumPictures" DataKeyNames="MappingId" ItemPlaceholderID="itemPlaceholder"
[code]...
I am getting server tags not well formed error..
View 2 Replies
Oct 12, 2010
In the process of migrating an old VS2003 web app to VS2008, I'm running into this issue and haven't been able to find a resolution. Sample code: "Default.aspx" has a PlaceHolder(ToolHeader). In the Page_Load(), we dynamically load a user control passing in the virtual path to a helper method [public Control ParseUserControl(string virtualPath)]. This reads the content from the physical path, returns
a Control from ParseControl() method. I immediately get the following error when I open the default.aspx page in browser.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. Parser Error Message: Could not load type 'DynamicUC.UcControl'.
Source Error:
Line 1: <%@ Control AutoEventWireup="true" CodeBehind="UcControl.ascx.cs" Inherits="DynamicUC.UcControl" %>
Can't figure out why it can't load the type. Namespaces are looking right. I try removing the Inherits="DynamicUC.UcControl" attribute from the "ucControl.ascx", it loads the page fine. Also, this control is a simple one and has no code behind. There are others with actual code behind. They won't work if I remove the Inherits attribute.
[Code]..........
View 3 Replies
Feb 10, 2010
I am dynamically creating a table of checkboxes on my test.aspx page. The dimensions (row and column count) of the table are determined by querying the database. In test.aspx page, I do the following:
<script language="C#" runat="server">
protected void Page_Load ( object src, EventArgs e ) {
//Query the database to get the data for rows and columns
CheckBox[] chkBox = new CheckBox[rows * columns]; //creates a collection of checkboxes
//Iterate over the query set in a double for loop to create dynamic checkboxes
}
</script>
Right now I have the number of rows=20 and columns=10, but it can increase (with the columns more likely). I used the Net tab in Firebug to ascertain the time taken by different events and found that GetTest.aspx is taking close to 4 minutes, which is too long a time to wait. Is there a way to being down the page load time? Is my approach to create dynamic check boxes correct?
View 4 Replies
Jan 8, 2010
Wasn't quite sure where to post this, seems like the issues could be any number of things, so I'm trying to keep it general... mods, feel free to relocate appropriately.
I am trying to build a page which will load various web user controls dynamically in response to menu selections made by the user, and then allow other interactions inside those controls (such as gridview manipulation and updates). The content page simply has a loginview, an ASP:Menu control, and an ASP:Placeholder. The placeholder is filled by the appropriate user control in response to the menu selection. Selecting a menu item causes a postback and the correct control is loaded as expected.
I realized that using dynamic loading with interactive controls would be a problem with respect to postbacks, so I added a ScriptManager to the content page and enclosed the gridview controls in the web user controls within UpdatePanels, thinking that all postbacks required by the GridView would be handled inside the UpdatePanel and not cause the parent page to refresh (which would then wipe out the dynamically loaded control). However, it does not seem to work this way. Instead, although the control containing the GridView loads correctly and displays data, when I attempt to page, edit, or select any item on the GridView, nothing happens on the first click. If I click on any item inside the control a second time, the entire page refreshes and the control and its contents disappear.
I have removed all the code inside the web user control and placed it directly into the content page to test, and everything functions correctly in that case. I think therefore that I must be missing something with how the user control is working, particularly with respect to the UpdatePanel. Is it just not possible to use an UpdatePanel to confine actions inside a user control that would otherwise cause the entire page to postback, or am I missing something somewhere?
Psuedo-code for the issue below
Content page
[Code]....
Control
[Code]....
View 1 Replies