Forms Data Controls :: Viewstate After Postback On Gridview With Dynamic Columns Emplate Fields?
Jan 13, 2010
My datasource is an ado data table that I have convert to a new data table so that each row in the original table is now a column with 1 row in my new table. I then bind the new datatable and create dynamic template fields with a text box where I bind the values. My problem is, when I try and retrieve the values changed by the user in the rowcommand event, the template columns no longer exists.
Does anyone know how i can retrieve these values? I've read over and over that you have to rebind the grid on each postback when you use dynamic templates, but I'm not sure how to do that and retrieve the values entered in the text boxes on the client side.
I've got a GridView on my page which has some bound controls, one of which is a label (to display total price):
[Code]....
However this value is not being passed to my page. All I see is '£' symbol, no price which makes me think Viewstate["youpay"] is empty? I have enabled viewstate on the Page and Control tags.
I am creating a gridview dynamically in a custom control and adding it to a Panel. I set the EnableViewState = true. The problem is that on a page postback the GridView does not seem to retain its values. If I add a GridView through the UI then the viewstate is preserved. The problem seems to occur when it is put dynamically only.
I am dynamically binding dataset to a gridview(No Columns at design time) .I need to show Totals for some of the dynamically generated columns in the footer.
I have a Gridview on my aspx page. On my page_load event I check for a record in the database, if the record exists for that row in the gridview I would like to add a new column in the same gridview and add a button control to it. This adding of new column in the Gridview should happen in the codebehind (c#). see the code I wrote for this, but when I run it, it does not create any column on the gridview page.
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 have a gridview, where I set the columns based on the columns in a datatable. I have a class that implements ITemplate, and creates a textbox template field. Everything works good, I can display my grid with the correct columns and headers. The probem comes up when I click a Save button, to save the user input. Of course the page postbacks, and I re-create the columns on PageInit. However, all the data the user entered is gone.
I have a GridView that has several dynamic columns (I do not know how many at design time and it could be 0-12 columns, hence need for dynamic columns). I have the columns in the grid and data bound to them - works great. There are other standard, design-time TemplateField columns with TextBox controls in them. These are bound with values that the user can edit. The grid is posted back via a Submit button. My question is "Why does gv.Columns.Insert() cause all my TextBox data to be null on Postback, but gv.Columns.Add() works like a champ?"
protected void BuildColumns() { // The first column to begin to insert the columns in the GridView int columnIndex = 5; BoundField aoColumn = new BoundField(); aoColumn.HeaderText = "New Column 1"; gvMyGrid.Columns.Insert(columnIndex, aoColumn); // kills txtQuantity.Text on postback gvMyGrid.Columns.Add(aoColumn); // works fine columnIndex++; foreach (MyEntity my in _myEntityCollection) { BoundField myColumn = new BoundField(); myColumn.HeaderText = String.Format("{0:d}", my.StartDate); gvMyGrid.Columns.Insert(columnIndex, myColumn); columnIndex++; } }
I then go on to assign values to these BoundFields in the _RowDataBound method and all of this works great. However, when I post back and try to reference some TextBox and they are all null. And yes, I have the BuildColumns() call wrapped in if (!IsPostBack) on Page_Load. Of course I would like to use .Insert() so that the columns can go in the proper location and not at the end of the Columns array.
I created a gridview that is made up of 4 gridviews and using a stored procedure to populate it. I create columns at runtime because the number of columns changes all the time.To make the grids editable I am adding template fields at runtime as I create the columns, this is to ensure that a user is able to edit the cells and some foot values update. Reason why I have four grids is to freeze rows and columns like in excel using javascript. The problem is that performance is very bad especially in IE, the grids take a long time to load. I am not sure if this is caused by the data load or the creation of text boxes. see some of the code below for my _aspx page:
have an ASP.net 4.0 page containing a GridView, where during the Page_Init event I'm dynamically adding BoundField columns to the gridview. I also have some custom sorting and paging methods that I use with this gridview, which result in postbacks on the page. In Chrome, Firefox, Safari, and Opera the gridview behaves as expected. HOWEVER, in IE 6, 7, or 8 when I click to sort a column in the gridview, or go to the next page of results in the gridview, it does not bind on postback, returning nothing back to the browser. Again, in anything but Internet Explorer, paging and sorting (frankly any postback event) brings back the gridview in its expected state. I only have the problem in IE. Relevant snippets of my code follow, where you'll see my Page_Init event calling a method in my WebFunctions class to add the BoundField columns for the table I pass to it, and my Page_Load event that calls the method in the user control responsible for binding my dataset to the gridview. Initial page load works in all browsers, but postback loading of the gridview only works in non-IE browsers.
I have a GridView. It has a 'static' TemplateField (in the .aspx page). I add and remove BoundFields to it depending on user preferences on postback. Affter the second postback, the template field appears empty.
Here is a stripped down mockup of what I'm doing. You can click the "Regular Postback" button as much as you want, and nothing bad happens. But if you click the "Recreate" button once-- it's all ok. Click it again, and the "one" column goes on Christmas break.
So is there something else I should be doing, or is this going to be a "halcyon1234 to code interface" error.
I have a details veiw and when you open it there are far too many fields so it ends up disappearing off the screen. I would like to split the view into two columns, and I tried to add a DIV with css class halfaway down the details view but it dosen't like divs being there. Is there a way round it? You can do it with FormView but i prefer DetailsView
I have a GridView, and I want Column1 to be equal to datatable data (filled by a SqlDataAdapter). Then I have two other fields by the SqlDataAdapter (first name, last name), and I want to have those two fields combined to form Column2. I have a TemplateField for my GridView that combines the first name and last name with Eval()'s, but the GridView places this combined field TemplateField and puts it as the first column.
How can I do this so that TemplateField can go in between fields that are databound?
I created this simple dynamic data form using Dreamweaver cs4, ASP VB technology and a MySQL Database: I love all of the extended functionality that VWD 10 provided, but the most important functionality for me is to be able to completely design a dynamic data table any way I want.
I noticed after researching extensively that the GridView, ListView and DetailsView templates still leave me very limited in what I can design. My question: is there a way for me to design a table in a details page with record placeholders that will be fetched from a master/detail page set?
I am dealing with dynamic fields in a for loop and now I need to retrieve the values that are being typed in the dynamic fields, any idea how can I do that? 2)also when I click the submit button, upon postback, the dynamic fields have gone missing, have been trying to slove that, but i did not, anyone knows how to deal with this? kinda urgent :x
3) and How do you compare the 2 dynamic fields? For eg: Im comparing the tbSch[i] to tbSch[i], so that the dates cannot be the same, am using a compare validator, but it throws me error that im comparing the same fields :) even though i change to ("tbSch" + i) for both, sorry Will provide my code snippet as follow :D tbNum is a textbox where user enter numbers and click generate
protected void btnGen_Click(object sender, EventArgs e) { for (int i = 0; i < Convert.ToInt32(tbNum.Text); i++) { // label and textbox needed Label lblSch = new Label(); TextBox tbSch = new TextBox(); Label lblWsGrp = new Label(); DropDownList ddlWsGrp = new DropDownList(); CompareValidator cvSame = new CompareValidator(); cvSame.ID = "cvSame" + i; cvSame.ErrorMessage = "Date cannot be the same"; cvSame.Operator = ValidationCompareOperator.NotEqual; cvSame.Type = ValidationDataType.Date; cvSame.Display = ValidatorDisplay.Dynamic; cvSame.EnableViewState = true; cvSame.ControlToValidate = (tbSch.ID);<<<<< what should be the value in here? cvSame.ControlToCompare = (tbSch.ID);<<<<<<<<<< and here? //schdule date lblSch.ID = "lblSch" + i; lblSch.Text = "Session Date : "; lblSch.EnableViewState = true; tbSch.ID = "tbSch" + i; tbSch.Width = 210; tbSch.Height = 27; tbSch.EnableViewState = true; //workshop grp lblWsGrp.ID = "lblwsgrp" + i; lblWsGrp.Text = "Workshop Group : "; lblWsGrp.EnableViewState = true; ddlWsGrp.ID = "ddlWsGrp" + i; ddlWsGrp.Height = 27; ddlWsGrp.Width = 210; ddlWsGrp.EnableViewState = true; ddlWsGrp.Items.Add("1"); ddlWsGrp.Items.Add("2"); //table to store data TableRow trow = new TableRow(); TableRow trow2 = new TableRow(); //row1 TableCell tc1 = new TableCell(); TableCell tc2 = new TableCell(); TableCell tc3 = new TableCell(); TableCell tc4 = new TableCell(); //row2 TableCell tc5 = new TableCell(); TableCell tc6 = new TableCell(); TableCell tc7 = new TableCell(); TableCell tc8 = new TableCell(); TableCelltc9 = new TableCell(); tc1.Controls.Add(lblSch); tc2.Controls.Add(tbSch); tc3.Controls.Add(lblWsGrp); tc4.Controls.Add(ddlWsGrp); tc5.Controls.Add(space); tc6.Controls.Add(CeSess); tc7.Controls.Add(space); tc8.Controls.Add(space); tc9.Controls.Add(cvSame) trow.Cells.Add(tc1); trow.Cells.Add(tc2); trow.Cells.Add(tc3); trow.Cells.Add(tc4); trow2.Cells.Add(tc5); trow2.Cells.Add(tc6); trow2.Cells.Add(tc7); trow2.Cells.Add(tc8); trow2.Cells.Add(t9); this.table3.Rows.Add(trow); this.table3.Rows.Add(trow2); } }
in asp.net page user able to select gridview Columns, and it will hide remaining columns and that selection done by check box with column list bellow is Image link , what exactly I am looking for [URL] it look bellow after selection of column done [URL]