I’m unable to find the textbox control in a gridview. And the below code is always returning NULL
HTML:
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
SkillColumn1
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 25%">
<asp:TextBox ID="txt_Skill1" runat="server" Text='<%# Eval("Skill1_value") %>'
CssClass="tms-secondaryRowTextBoxNew" Width="35%" />
</td>
</tr>
</table>
</ItemTemplate>
Entire Mark up:
<asp:GridView ID="gvLocView" runat="server" AutoGenerateColumns="False" CellPadding="0"
Width="100%" BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px"
EmptyDataText="No Data Available"
onrowdatabound="gvLocView_RowDataBound">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td align="center">
  
</td>
</tr>
<tr>
<td align="center">
Location
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 50%">
<asp:Label ID="lblLocation" runat="server" Text='<%# Eval("Location") %>' CssClass="tms-secondaryRowTextBoxNew" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="14%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
Quarter
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 100%">
<asp:Label ID="lblQuarter" runat="server" Text='<%# Eval("Quarter") %>' CssClass="tms-secondaryRowTextBoxNew" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="13%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
SkillColumn1
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 25%">
<asp:TextBox ID="txt_Skill1" runat="server" Text='<%# Eval("Skill1_value") %>'
CssClass="tms-secondaryRowTextBoxNew" Width="35%" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField> <HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
SkillColumn2
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 25%">
<asp:TextBox ID="txt_Skill2" runat="server" Text='<%# Eval("Skill2_value") %>'
CssClass="tms-secondaryRowTextBox" Width="35%" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
SkillColumn3
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 25%">
<asp:TextBox ID="txt_Skill3" runat="server" Text='<%# Eval("Skill3_value") %>'
CssClass="tms-secondaryRowTextBox" Width="35%" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
SkillColumn4
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 25%">
<asp:TextBox ID="txt_Skill4" runat="server" Text='<%# Eval("Skill4_value") %>'
CssClass="tms-secondaryRowTextBox" Width="35%" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
SkillColumn5
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 25%">
<asp:TextBox ID="txt_Skill5" runat="server" Text='<%# Eval("Skill5_value") %>'
CssClass="tms-secondaryRowTextBox" Width="35%" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
SkillColumn6
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 25%">
<asp:TextBox ID="txt_Skill6" runat="server" Text='<%# Eval("Others") %>'
CssClass="tms-secondaryRowTextBox" Width="35%" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
margin-left: 0px">
<tr>
<td>
  
</td>
</tr>
<tr>
<td align="center">
Total
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr style="width: 100%">
<td style="width: 100%">
<asp:Label ID="lblTotal" runat="server" Text='<%# Eval("Total") %>' CssClass="tms-secondaryRowTextBoxNew" />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" />
<ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" />
</asp:TemplateField>
</Columns>
<EditRowStyle CssClass="tms-primaryRow_new" />
<HeaderStyle Font-Bold="True" ForeColor="White" CssClass="tms-gridViewHeader_fy11"
HorizontalAlign="Center" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>
Codebehind:
if (e.Row.RowType == DataControlRowType.Header)
{
int counter=0;
for (int j = 1,col=2; j <= 7; j++,col++)
{
TextBox t = (TextBox)e.Row.Cells[col].FindControl("txt_Skill" + j.ToString());
if (t != null)
{
t = e.Row.FindControl("txt_Skill" + j.ToString()) as TextBox;
if (!string.IsNullOrEmpty(strSkillArray[counter]))
t.Text = strSkillArray[counter].ToString();
}
}
}
Exception:
System.Web.HttpException was unhandled by user code
Message=”DataBinding: ‘System.Data.DataRowView’ does not contain a
property with the name ‘Skill1_value’.” Source=”System.Web”
ErrorCode=-2147467259 StackTrace:
at System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName)
at System.Web.UI.DataBinder.Eval(Object container, String[] expressionParts)
at System.Web.UI.DataBinder.Eval(Object container, String expression)
at System.Web.UI.TemplateControl.Eval(String expression)
at ASP.location_aspx._DataBinding_control53(Object sender, EventArgs e) in d:\ABC\Location.aspx:line 251
at System.Web.UI.Control.OnDataBinding(EventArgs e)
at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBindChildren()
at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBindChildren()
at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.WebControls.GridView.CreateRow(Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState
rowState, Boolean dataBind, Object dataItem, DataControlField[]
fields, TableRowCollection rows, PagedDataSource pagedDataSource)
at System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable
dataSource, Boolean dataBinding)
at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable
data)
at System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable
data)
at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable
data)
at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments
arguments, DataSourceViewSelectCallback callback)
at System.Web.UI.WebControls.DataBoundControl.PerformSelect()
at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
at System.Web.UI.WebControls.GridView.DataBind()
at Location.UpgradeAccount() in d:\ABC\Location.aspx.cs:line 368
at Location.Page_Load(Object sender, EventArgs e) in d:\ABC\Location.aspx.cs:line 70
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,
EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:
Your exception has nothing to do with the codebehind you posted. The page cannot bind your grid to whatever DataSource you gave it because it cannot find Skill1_value in your DataSource.