HtmlInputTextbox显示错误

时间:2010-08-13 04:15:14

标签: c# asp.net gridview

我使用htmlinputtext设计了我的页面,如下所示

  <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Label ID="lblTrialPeriodEnds" runat="server" Text='<%# Eval("trialPeriodEnds","{0:dd/MM/yyyy}") %>'></asp:Label>
                    </ItemTemplate>
                    <HeaderTemplate>
                        TrialPeriodEnds
                    </HeaderTemplate>
                    <EditItemTemplate>
                    <input type="text"  name="testinput" class="textbox" value='<%# Eval("trialPeriodEnds") %>'
                            id="txtEffectiveDate" runat="server" />
                        <a onclick="showCalendarControl('txtEffectiveDate')" href="#">
                            <img alt="cal" src="calendar.gif" style="width: 20px; height: 20px" border="0" /></a>
  </EditItemTemplate>
                </asp:TemplateField>

我在rowupdating中的代码如下

       HtmlInputText htmInput = (HtmlInputText)GridView1.Rows[e.RowIndex].FindControl("Daily");
     strExpiry = htmInput.Value;

我收到错误,因为对象引用未设置为对象的实例。

为什么显示可以告诉

1 个答案:

答案 0 :(得分:4)

您使用的输入是HTML输入标记。为了使ASP.NET能够看到此标记,您必须包含runat =“server”属性。这将向ASP.NET表明它应该跟踪标记,您将能够从代码中与它进行交互。如果没有此标记,ASP.NET将不知道控件,因此在调用FindControl时它不会显示。

请注意,当您让ASP.NET知道控件时,它可能会修改ID。这样ASP.NET就可以确保每个控件都具有唯一的ID。您的示例在GridView中具有控件,因此将修改输入控件的ID,以便ASP.NET知道该控件是GridView的子控件。您需要修改任何客户端脚本以了解新ID。我提醒不要检查HTML中的ID,然后只需指定新ID,因为ASP.NET结构的修改可以更改ID。您在评论中提到您正在使用jQuery。我建议使用一个类,并让jQuery根据输入控件的类分配控件。