Web Forms :: Creating Dynamic Web Controls Outside Init Method?
Sep 26, 2010
I am creating a dynamic <asp:Table> based on a user's selection from a DropDownList. The number of columns and rows in the table depends on the user's choice from the DropDown.
The final two columns in each row needs to contain an Edit and Delete button. I am able to create these buttons programmatically. However, I am unable to get the click event to fire.
After researching this, it appears to be the case that my dynamic Web controls need to be created in the page Init method.
However, I am unable to do this as I do not know how many table rows, columns and buttons to create, until after the user has made a selection from a DropdownList.
I would be be very grateful for some tips on the correct way to create and enable the events for my dynamic buttons, in this scenario.
Here is a brief outline of how the program currently works (this is just a brief outline I quickly sketched, small details may be wrong!):
As we know when IIS receives the first request for a particular Asp.net application resource, IIS creates an instance of a HttpApplication (defined in global.asax codebehind).When this new instance is created it's initialization happens that also checks all configured HTTP modules.All modules are then instantiated and put in the application's Modules collection (of type HttpModuleCollection)modules are looped through and their Init() method is called (when they register for request events)
As far as I understand it the above scenario happens when a web application is started/initialized (hence application start event).What happens with modules?
Are they (re)instatiated on each request or reused from the Modules property on each consecutive request while the web application is alive? As I understand IIS and Asp.net they are reused through the whole life of a web application.
If they are reused, can we assume that their Init() method is actually a pseudo event handler for application start event? The thing is we can't attach to application level events within http modules. But if they are being reused we could use Init() as application start event and do whatever we'd put in global.asax instead.
Question,Can we assume that module's Init() method is called only on application start event? Could we use this assumption to i.e. register routes for applications whose global.asax codebehind we can't change? web.config is usually accessible and we can change it the way we want.Would this actually work?
Additional info,We can check HttpApplication code and check its InitModulesCommon() method. This one actually calls Init() of each registered HTTP module. What is more interesting is that this method is only used by InitIntegratedModules() and InitModules() methods. Which are both used only in HttpApplication.InitInternal() method. This is the basis of my assumptions, but I would like to know whether someone has abused IHttpModule.Init() for application start event.
I have an xml feed that contains a list of form fields that I need to create and then submit to the server once a user has filled it out. Below is a snippet of the xml I am working with. how I should go about creating these controls and retrieving their values on postback?
I'm presenting a list of products within a ListView. Each product can have associated "Options" (Size, Colour etc), but may have none. For each product that gets added, I need to render a dropdownlist for each of its options. E.g. A "Colour" dropdown might have "Black", "White", "Red" etc. I need to generate these controls dynamically, as they are defined by the data itself.
So far, so good. The dropdowns are rendered, and everything "looks" good. The trouble is, I can't work out how to actually get it to work. .Net is complaining about "EnableEventValidation", and ViewState won't work as I've added the controls late in the page's life cycle. As these controls are dynamic, I don't know how to pick up the selected values, and persist them on a post back! When the user clicks on the "Add to basket" option for the product, I need to determine which options the user has selected, and add them to the basket.
Am I missing something here? Is there an easier way of achieving this? I kind-of feel like I'm in a "chicken and egg" situation here. I can't create the controls until the data is loaded (in the ItemDataBound event), but that too late for ViewState. Is there a generally accepted best approach for achieving this sort of thing in ASP/Net?
I'm trying to make a form where the text boxes and titles for each box are created dynamically based on how many array values there are. I have tried a repeater but am a little unclear on how I can get the texbox to bind to one area of and the title to bind to another. This is what I have so far:
[Code]....
...and this is the code-behind with an associated array, arr1:
// Bind Array to Repeater rep1.DataSource = arr1; rep1.DataBind();
This works and adds values where container.dataitem is but how to I make it add one set of array values there and another set of array values where the *x* is?
Example: we have different articles in a database like cars, jewelery, boats. The data related to these articles is different in the tables. I have to show that data in a textboxes and let the user change those data and update. I can do the update and reading the data from database. But the problems is for each item the no.of columns and rows will differ.
My task is I need to get the data according to the use selection in the table with textboxes. I dont know which container (gridview, formview or etc) will suites for my requirement. send me any sample code or any tutorial related to this.
Note: showing the data in a table should be a constraint. Because I should show data row wise (each row contains 3 textboxes and 3 labels (DB table column names))
i have a gridview which is populated from a stores proc using pivot tables. The column are created dynamically apart from a total column which is created as a template field. the gridview looks like below:
CPW EE Foh H3G IND O2 ORG P4U T-M TSC VIR VOD Total
Stores Visited
70 0 0 12 0 16 18 7 11 1 2 8 145
i need to add a hyperlink to each gridview cell and when that cell is clicked pass the header text through the querystring to another page. I can access the cells value ok and pass that through but i cannot seem to access the cells column header text. when i response.write out a count of the gridview.columns it brings back 2 which is the template fields but not the dynamic fields i have tried this on the rowdatbound, rowcreated, page_load and page_unload. the count should be 12 its like it cannot find the dynamic columns at all. ?
here is my code for populating the gridview
[Code]....
and here is my gridview:
[Code]....
i am also moving the total column in this code
[Code]....
and calculating my total in this code and adding my link to the total colum (which works fine)
[Code]....
now i just need to somehow add a link to the other cells and somehow get the value of the header text for that cell clicked.
I am creating an Asp.net web site which will support dynamic data. When I am creating a dynamic web site from Scratch (from template in VS) all is working fine. But when I am trying to add dynamic entity (.edmx) file and running the application I am getting following error
"The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'. "
I need to get access to the page index of the gridview so I can correctly get some data from a coresponding array to set the cell's contol properties correctly. Below is what I've got so far. The ExcelObject is a class that houses both the data read in from an sutomer submitted excel file and a matching 2 dimensional array of characteristics that I use in this case to set the CssClass property. My problem is that when I enable paging for the gridview I don't get the proper datasource row index when the data is read by the databinder.eval; what I'm getting is the current row of the gridview being generated.
i have a Method which create textboxes dynamicly. When i change one of my textbox's text, it create that amount textbox and label. But my problem is, when i entered values to them and click my button, they are disappearing and i cant find my controls. Some of my codes
As a workaround for the fact that asp:Checkboxes don't have values, I am attempting to dynamically create the ID's of checkboxes in a DataList so that it inserts the primary keys into the control ID. This is surprisingly difficult.
I have placed a PlaceHolder in my DataList ItemTemplate, then in the ItemCreated I create the checkboxes using string.Format("Checkbox{0}", DataBinder(e.Item.DataItem, "ID")). The problem is that this only works in a non-postback condition, as on postback the DataItem is null. And of course ItemDataBound isn't called on PostBack so that won't work either.
I can't seem to find a good way to handle this short of if (IsPostback) dataList.Bind(), which i don't think is a good way to do it.
I am going to deploy my Application on server but instead of specifying connection string (servername .server userid , password) in web.config manually is their any way of entering the server details in the web.confi file dynamically from client side when i first run the application.
in the starting page the user must specify the server details and database name from which he want the data to be loaded .And once i enter the server details it should bepermanently stored in the web.config file instead of dataabse.
I am using an application from a book for a shopping application , to adapt for my own learning, but there seems to be a problem with the shopping cart page. This is a section I have not changed as there is no need to but there is an error. In the code behind the only thing new is the namespace:
namespace OIClothing { public partial class Cart : System.Web.UI.Page { ShoppingCart cart; // it doesn't like this, giving the debug message the type or namespace 'Shopping Cart" could not be found protected void Page_Load(object sender, EventArgs e) { CheckTimeStamps(); if (Session["cart"] == null) { cart = new ShoppingCart(); Session["cart"] = cart; } else { cart = (ShoppingCart)Session["cart"]; } GridView1.DataSource = cart.GetItems(); if (!IsPostBack) GridView1.DataBind(); btnCheckOut.Enabled = (cart.Count > 0); } protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { cart.DeleteItem(e.RowIndex); GridView1.DataBind(); }
but when running the page, this error is given: CS1061: 'ASP.cart_aspx' does not contain a definition for 'GridView1_RowDeleting' and no extension method 'GridView1_RowDeleting' accepting a first argument of type 'ASP.cart_aspx' could be found (are you missing a using directive or an assembly reference?)
We have a requirement of creating an input page which might be different for different users, changing will be in terms of number and type of fields. How should I architect this page. Should i create page using "XML and XSLT" or "XML and database fields" or is there any more flexible way to create this type of page. I couldn't visualise the flow in which this should be implemented.
currently i have db name , server name & coonection credentials for sql daTAbase hardcoded in webconfig but i need to create a dynamic connection string in which db name will change currenly i have a main .aspx with a button & on its click event i get the connection string frm webconfig and move on to next page
wht i need is in the main page i need to populate all the db of a particullar server in a dropdown the user will first select the db frm drpdown & click the button & with the db name frm dropdown connection string shld be formed
i am working on a project in which i have to create newsletters. We wish to give user functionality of editing the complete layout ( drag and drop if possible) I am able to achieve drag and drop with web parts but can't customise them much like adding richtext box and saving multiple copies of same page with different layouts. I then wish to enable user to send the html only part of page which contains dynamic layout.
I've created some dynamic buttons on page load but the buttons need to have an onserverclick event and pass a value. I used buttons because they can pass a value. My code below so far, just outputs onserverlick to the html page, which is obviously not what I want. Would it be possible to use some other method, I originally used hyperlinks until I needed to pass a value (I didn't want to use querystrings). [Code]....
I added the extender and when i tried to add the method this message poped up; Cannot create page method "GetCompletionList" because no Code Behind or codefile was found.
I need some high-level advice on how to deal with this issue. I want to have dynamically created buttons, each with a different CommandArgument, that call an OnCommand event when clicked. Given that these are dynamic buttons, I have to re-create them in Page_Load after the postback. However, when I re-create the buttons, the orginal command arguments are lost, and the arguments generated after the postback are only valid.As you'd expect, if I don't recreate the buttons, the event handler is never called because the buttons don't exist.My question is, how can I retrieve those original commandarguments, without the use of sessions.
I have tried various techniques that some seemed to have outlined and so far none of them have worked. I have a situation where the Page_Load() needs to build a set of <input id=<dynamic name'>> that are build dynamically inside a <ul>. The form gets created fine but when I click the button and look at the results returned to the server I cannot seem to find the input values. Is there a defined way of accomplishing this?
I want to create dynamic datalist control with item template in a for loop.
Example: In my database, I have 20 Categories and 100 products. Each categories have some products. Now I want to show 20 categories all together in my page and it is not specific that categories will remain same. It can be increase or decrease. I am taking CategoryID with for loop and now I want to bind datalist according to the count of for loop.
Im developing ecommerce website and i want to add category menu to my website. This category menu should have 2 levels for sub categories as well. I tried navigation controls in ASP.net. But still i cant understand how to create the navigation menu in order to integrate with back office. I understand that i can do this with XML file, But if i want to add new products categories or remove categories, XML file should update automatically according to that. I don't understand how to do that. In brief all i want is create category menu with subcategories and i want to control this from my back office.