代码之家  ›  专栏  ›  技术社区  ›  Developer

显示错误的HtmlInputTextbox

  •  0
  • Developer  · 技术社区  · 14 年前

      <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 回复  |  直到 14 年前
        1
  •  4
  •   sgriffinusa    14 年前

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

    注意,当你ASP.NET注意到控件,它可能会修改IDASP.NET确保每个控件都有一个唯一的ID。您的示例中的控件位于GridView中,因此将修改输入控件的ID,以便ASP.NET知道控件是GridView的子级。您将需要修改任何客户端脚本以了解新的ID。我警告您不要在HTML中检查ID,然后简单地将新ID分配为对新ID的修改ASP.NET结构可以更改ID。您在评论中提到您正在使用jQuery。我建议使用类并让jQuery根据输入控件的类来分配控件。