FindControl Not Working On GridView When Inserting Bound Columns
Nov 8, 2010
I have a gridview with several ItemTemplates. The first contains a checkbox the rest contain textboxes. I then added dynamically some bound controls like this:
BoundField bdfPrivName = new BoundField();
clsUtilities.SetBoundFieldCenter(ref bdfPrivName, "PrivName", "Priv Name");
BoundField bdfDescription = new BoundField();
clsUtilities.SetBoundFieldLeft(ref bdfDescription, "PrivDesc", "Description");
BoundField bdfLive = new BoundField();
clsUtilities.SetBoundFieldCenter(ref bdfLive, "Live","Active?");
grdExisting.Columns.Add(bdfPrivName);
grdExisting.Columns.Add(bdfDescription);
grdExisting.Columns.Add(bdfLive);
I then use FindControl() to locate the checkbox and textboxes and perform my logic based the result
foreach (GridViewRow gvr in grdMissing.Rows) {
mckbAny = (CheckBox)gvr.FindControl("ckbAdd");
mtxtApplyDate = (TextBox)gvr.FindControl("txtAddApplyDate");
mtxtDateToAdd = (TextBox)gvr.FindControl("txtAddDateToAdd");
mtxtDateToRemove = (TextBox)gvr.FindControl("txtAddDateToRemove");
}
etc.
This all worked fine. I then got a request to put the bound fields as the second, third and fourth columns, after the check box and before the textboxes. I found that this was easy to do by changing the Add's to Inserts as follows:
grdExisting.Columns.Insert(1, bdfPrivName);
grdExisting.Columns.Insert(2, bdfDescription);
grdExisting.Columns.Insert(3, bdfLive);
It looked fine of the page, but the FindControl(), all of them fail to work.
I've got a grid view on my form that is bound to a data table at run tim. The data table is returned by a function rather than direct from the DB so I can't set the datasource at runtime.
I bind the grid in the page_load event like this:-
Code: Dim _dt As System.Data.DataTable _dt = _srvc.GetVinylShutters(0) _dt.Rows.Add(_dt.NewRow) grdShutters.DataSource = _dt grdShutters.DataBind() (_dt.Rows.Add(_dt.NewRow) is just there to add a blank row in, otherwise I wasn't seeing any columns at all)
I've then got the following snippet which I want to use to hide some underlying columns:-
Code: For Each col As DataControlField In grdShutters.Columns Select Case col.HeaderText Case "OrderID", _ "ShutterID", _ "ModelID", _
[Code] ...
The thing is, wherever I put this it doesn't seem to hide the columns. If I break into the code I can see that grdShutters.Columns.Count equals zero althought I can see that the bound datatable has 38 columns.
I've tried the Page's Load, LoadComplete and PreRenderComplete events as well as the gridview's DataBound, RowDataBound and RowCreated events. I get teh same result in all of them. The grid doesn't actually have any columns until it appears on the screen.
In my Application, I am using User control which contains one GridView and few Buttons. GridView Contains CheckBox in Item Template of first Column for Selection purpose. Now on one of the Button's click Event I am traversing through the GridView and find which row is selected.
Following is my Code for traversing which is not working:
I have an Objectdatasource configured with Select, Insert, Update & Delete queries in a Dataset. This datasource is linked to my Gridview. I do not require all fields in the table to be displayed or updated in my grid so i have turned off the Visible property on several.
However, when i go into Edit mode and trigger the UPDATE to the database table, i get NULL values updated in the columns i set False for the Visible property.
How can i remove these columns from the GridView and the Edit mode and still have them UPDATE with their current values instead of being overwritten with NULL's?
i have a gridview bound to sql datasource with template fields binding the columns. I have set the Header Style to a css class. I have 3 columns not bound to data as Add, Edit and Delete. When I set the text color to white for the header only the non bound columns go white. The bound columns are BLUE like hyperlink. Any one know a way round this. (If I set the style in the gridview the all columns are white. Want to set in external css file).
I have a Gridview and when the edit button is clicked the details of that row is displayed using a detailsview. While displaying, I need to find a control in detailsView, and then bind it with a Datasource. First of All I'm not sure about the event to be used but have used DetailsView1_DataBound. However, if I have to find the control using: var control=(ControlType)DetailsView1.Findcontrol("ID"); Always returns null. May be I am not using the right event, and it couldn't find the control at that point.
I want to access child menuitem by name.not index number is it possible? This doesn't working Menu menuLogin = (Menu)(LoginView1.FindControl("mLogin")); MenuItem mi = menuLogin.FindItem("Register"); mi.text="Null Reference Exception here";
But this works: Menu menuLogin = (Menu)(LoginView1.FindControl("mLogin")); MenuItemCollection mic = menuLogin.Items[0].ChildItems; MenuItem mi = mic[0]; mi.text="its OK";
I am looking something like this: MenuItemCollection mic = menuLogin.Items[0].ChildItems; MenuItem mi = mic["Register"];//or mic.finditem("Register") or so... mi.text="its OK";
Can Someone explain why this doesn't work here, when it works in another formview? [Code].... I Get Object Reference Not Set, but its all there. I see no reason why it shouldn't work. Same error happens if i remove the first if statement and leave the second it Gives an error on LocationAddButton.Visible = false;
I'm using ajax control toolkit tabcontainer control in my aspx page. When user clicks on a button i need to show a PAYPAL button(which will be stored in database table as <form action="".....</form>)I'm binding the entire paypal form to a server side DIV tag, i'm getting an unknown runtime error.. How can i do this? can anyone please help me..There will be many buttons on aspx page, based on button click, i'm populating DIV tag with respective PAYPAL form data.
I'm working on setting up a Gridview that dynamically creates new "columns" after a set amount of rows. To do this, I bind a datasource to the Gridview and then add new cells and shift the other items into those cells. I seem to be having an error with the link buttons that I move around. All of the items get put in there correct location, but for some reason, when I click a link button that has been added to a new cell, the sender's text is the LinkButton in the original cell's text. Does anyone know why this would be happening? Is the gridview not meant to be manipulated after it has been data bound? This is the code that I use to update the gridview.
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.
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]
I have a datasource, which includes many columns, idealy, I need use a gridview to show:
1) first 3 columns: template fields, these fields depends on values in some columns of datasource. I use template fields, hard coded. works fine.
2) the other columns. This is I do not know how to do it. In the data source, there are about 10-20 columns data, each time, the # of columns of the data varies. idealy, I need show each of them as a seperated column in gridview. The entire data source may have 30 columns, but some of them are used in 1), and I only want show these 10-20 columns in gridview. Some columns in data source, I may not use them at all. is there a way to do this? or have to seperate them as a detail view style UI?
I apologize for the odd title. I've been trying to figure out how to do this and can't quite put it into words. Basically, I need to try to display a GridView with a whole bunch of columns (37 in one case) in two "rows" of columns. More or less.
So instead of this:
Column1 Column2 Column3 Column4 Column5 Column6 Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data
I'd like something like this:
Column1 Column2 Column3 Data Data Data Data Data Data Data Data Data
Column4 Column5 Column6 Data Data Data Data Data Data Data Data Data
As in the example there can be multiple rows returned which all need to be displayed. I'm trying to stop a very large horizontal scroll bar being required. I've been searching as much as I can but haven't found anything that fits what I'm looking for.
I've a function named fillgrid() which fills the grid with data.This function works correctly on pageload,but after inserting into database i've called this function again, which is not getting executed.This issue happens only in real time server not in my local system,I'm not getting any error and i cannot recognize why fillgrid() function is not getting called??I've used update panel.This is the code for insert function which inserts over 500records.
I have a dynamic gridview in which i need to add textbox, checkbox, imgButton in the cell dynamically.
At the moment user click on the imbgutton, a click event fire and i need to capture the user input on the checkbox and textbox of the particular cell.
I have problem in finding out the checkbox and textbox control in the imgbutton click event. The cause is i do not know which row in the gridview i need to search to for the control.
What I've done is I've setup a Gridview with a datasource to show only 1 of the columns I need from the datasource, but I also have another ItemTemplate Column in which I have a dropdownlist with another datasource that I've bound to the dropdownlist.
What I need to do is have the dropdownlist show the selected one when compared to a id from datasource in the gridview.