无法在ItemTemplate中找到文本框控件

本文关键字:文本 控件 ItemTemplate | 更新日期: 2023-09-27 18:19:12

我无法在gridview中找到文本框控件。下面的代码总是返回NULL

:

<asp:TemplateField>
    <HeaderTemplate>
        <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px;
                margin-left: 0px">
            <tr>
                <td>
                    &#160;&#160;
                </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>

完整标记:

<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">
                                        &#160;&#160;
                                    </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>
                                        &#160;&#160;
                                    </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>
                                        &#160;&#160;
                                    </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>
                                        &#160;&#160;
                                    </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>
                                        &#160;&#160;
                                    </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>
                                        &#160;&#160;
                                    </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>
                                        &#160;&#160;
                                    </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>
                                        &#160;&#160;
                                    </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>
                                        &#160;&#160;
                                    </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>
后台代码>:

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();
            }                
        }
    }

:

包含。HttpException未被用户代码处理
消息= "数据绑定:"System.Data。DataRowView'不包含属性名称为"Skill1_value"。源= "系统。网络"
ErrorCode = -2147467259加:在System.Web.UI.DataBinder。GetPropertyValue(对象容器,字符串propName)在System.Web.UI.DataBinder。Eval(对象容器,字符串[]expressionParts)在System.Web.UI.DataBinder。Eval(对象容器,字符串表达式)在System.Web.UI.TemplateControl。Eval(字符串表达式)在ASP.location_aspx。_DataBinding_control53(对象发送方,EventArgs e) ind:'ABC'Location。aspx: 251行在System.Web.UI.Control。OnDataBinding (EventArgs e)在System.Web.UI.Control。DataBind(布尔raiseOnDataBinding)在System.Web.UI.Control.DataBind ()在System.Web.UI.Control.DataBindChildren ()在System.Web.UI.Control。DataBind(布尔raiseOnDataBinding)在System.Web.UI.Control.DataBind ()在System.Web.UI.Control.DataBindChildren ()在System.Web.UI.Control。DataBind(布尔raiseOnDataBinding)在System.Web.UI.Control.DataBind ()在System.Web.UI.WebControls.GridView。CreateRow(Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState)rowState, Boolean dataBind, Object dataItem, DataControlField[]字段,TableRowCollection行,PagedDataSourceSystem.Web.UI.WebControls.GridView.CreateChildControls (IEnumerable数据源,布尔数据绑定)System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding (IEnumerable数据)System.Web.UI.WebControls.GridView.PerformDataBinding (IEnumerable数据)System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback (IEnumerable数据)System.Web.UI.DataSourceView.Select (DataSourceSelectArguments参数:DataSourceViewSelectCallback在System.Web.UI.WebControls.DataBoundControl.PerformSelect ()在System.Web.UI.WebControls.BaseDataBoundControl.DataBind ()在System.Web.UI.WebControls.GridView.DataBind ()在d:'ABC'Location.aspx.cs:第368行在的位置。Page_Load(对象发送者,EventArgs e)在d:'ABC'Location.aspx.cs:第70行在System.Web.Util.CalliHelper。EventArgFunctionCaller(IntPtr fp, Object 0, Object t, EventArgs e)在System.Web.Util.CalliEventHandlerDelegateProxy。回调(对象发送者,EventArgs e)在System.Web.UI.Control。OnLoad (EventArgs e)在System.Web.UI.Control.LoadRecursive ()在System.Web.UI.Page。ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:

无法在ItemTemplate中找到文本框控件

您的异常与您发布的代码无关。页面无法将你的网格绑定到你给它的任何数据源,因为它无法在你的数据源中找到Skill1_value。

HeaderTemplate中没有任何内容。您必须使用DataControlRowType.DataRow来查找行类型。

if (e.Row.RowType == DataControlRowType.DataRow)
{
    int counter=0;
    for (int j = 1,col=2; col <= 7; j++,col++,counter++)
    {
        TextBox t = (TextBox)e.Row.Cells[col].FindControl("txt_Skill" + j.ToString());
        if (t != null)
        {
            if (!string.IsNullOrEmpty(strSkillArray[counter]))
                t.Text = strSkillArray[counter].ToString();
        }                
    }
}

你的文本框在itemtemplate中而你在header模板中搜索这就是为什么

请按以下方式更新代码

change if condition

 if (e.Row.RowType == DataControlRowType.DataRow)
查找文本框

的代码
 TextBox txt_Skill= (TextBox)e.Row.FindControl("txt_Skill");