Forms Data Controls :: FindControl Failed To Work For GridView
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 FindControls, all of them fail to work.
I got a content place holder, in this holder, I have a grid view. Inside this grid view, I will have multiple textbox added at runtime.
From the source code, I found that one of the textbox's id is as "ctl00_CPHDetail_gvDetail_ctl02_txt_Text1", CPHDetail is the content place holder, and gvDetail is the grid view.
What I wanted to do is to find the text box control and retrieve its value.
So far, this is what I have done, and it was able to return the correct info up to the grid view. It can never find the text box control.
I wonder will it caused by the ct102 between "ctl00_CPHDetail_gvDetail_ctl02_txt_Text1"
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.
I have a dropdownlist embedded into an asp.net gridview. I have successfully populated the dropdown list in the footer but have not been able to populate the dropdownlist in the EditItemTemplate. Here is my code that works. I need to do the exact same thing for a dropdownlist embedded in the update functionality of the gridview.
After I add a new author I am displaying the author inside the gridview in an Accordian and I need to expand the accordian for this one record, in the btn_AddAuthor event I am trying this:
[Code]....
the problem that I am having is that nothing happens: , the accordian is not expanded but I need it to be expanded.
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:
In my GridView I use FindControl/<FooterTemplate> with a TextBox that you can enter an integer with a comma
into the TextBox, because I create an instance of the Textbox first and then remove the comma out of the integer before the TextBox is used to update the table in the database.
However once the data is in the table and displayed in the GridView if you try to change the integer and use a comma in the GridView you cannot because FindControl/<EditItemTemplate> will not create an instance for you to remove the comma from the integer before it updates the table because FindControl/<EditItemTemplate> doesn't allow you to create an instance of the TextBox first, instead when you try to use the instance that looks like was created it gives an error stating:
Object reference not set to an instance of an object.
So the question is:
HOw do you create an instance of a TextBox in a GridView when using FindControl/<EditItemTemplate>?
I've got a gridview with a few textboxes in each row which I want to insert into a database, after a user clicks a submit button (thats outside of the gridview)
This is my code for the gridview
[Code]....
And this is my code for the button
[Code]....
But when I click the button it gives me this error
"Multiple controls with the same ID 'Label12' were found. FindControl requires that controls have unique IDs."
How do I give the controls unique IDs if they are in a gridview and the rows are database driven?
I'm doing this in my Master Page. I want to access a Linkbutton within the Gridview and set the enabled = false; I tested this and it works all the way up to the first if statement.If I insert a response.write to get the frmctrl.ID, I get all of the controls on the page. BUT, can't get the controls within the gridview.How do I get the contorls within the gridview? I prefer not to do this using Findcontorls and esp setting the control to Public.
Object reference not set to an instance of an object.
Description:
An unhandled exception occurred during the execution of the current web request. review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Public Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs)Line 246: 'Dim thv As GridView = TryCast(Me.FindControl("grd1"), GridView)Line 247: Dim lbltargetdir As Label = TryCast(TryCast(Me.FindControl("grd1"), GridView).FindControl("lblparentpath"), Label)Line 248:Line 249: Directory.CreateDirectory(lbltargetdir.Text.ToString() & nm.Text)
My GridView uses auto generate Edit & Delete command button. And then program the insert button. I want to do something when users click the Edit button so I wrote something like this:
[Code]....
When click the Insert button in the Footer, the program works fine. But when trying to click the auto generate Edit button, the following statement failed with the exception stated in the code above:
I got a web page, it has a tabcontainer, within each tab, there will be a gridview, all the tabs and gridview are created at run-time, i have only one code, that I will loop through to create all those tabs and gridview. When I apply the sorting, and I click on the column name on any grid, it returned an error saying index was out of bound. BUT, when there is only ONE grid view created, it is working fine, I suspect it mixed up all the grid view's id and so on. But I have assigned different ID to gridview
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. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
The above error occurs with gridview control , when used with template field columns with item template / and edit templates etc. updating a row within gridview, at the time of loadiong it loads perfectly fined, but when tried to modify an existing row within gridview control, then it produces the error. Make sure the grid view control has to be a child control which manages the child table info with in a master form. to reproduce the above problem the grid view must be loading the child records info of a master within the masterform, meaning both master data and gridview data all to be managed in one single form.
I had to replace gridview control with datagrid and then it worked perfectly fine. I wasted almost 4 days of my time., there is no way we could figure out the problem. here is the full info of the problem.
Server Error in '/' Application.
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. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: 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. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
Source Error:
[Code]....
Stack Trace:
[HttpException (0x80004005): 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. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.] System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +306 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 System.Web.UI.Page.LoadAllState() +312 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1661
Version Information: Microsoft .NET Framework Version:2.0.50727.3603; ASP.NET Version:2.0.50727.3082
i have a masterpage and other pages. i want to use findcontrol method to find a textbox (not on the master page) to check whether it is empty or not.
my code is as folows; Dim myContentPlaceHolder As ContentPlaceHolder = CType(Master.FindControl("MainContent"), ContentPlaceHolder) Dim UpdatePanel1 As UpdatePanel = CType(myContentPlaceHolder.FindControl("UP1"), UpdatePanel)
I've run into this bizarre situation wherein I get the below error if I set page size other than 5 in the page using this control.
"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. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request."
This GridView is a hierarchial type. I add a new GridView below each row in the webcontrol overriding OnRowDataBound.
I am using Ajax ConfirmButtonExtender Control in GridView for Deleting the Record. I am also Exporting the GridData to Excel using Render Method. But when i click on the Export Button, i am getting below error Extender control 'confirmID' is not a registered extender control. Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors(). Parameter name: extenderControl