0

基本上,我试图将验证控件放入 Listview 中。但是,我无法指定 ControlToValidate = "grpNameTextBox"。

我试着把

((RequiredFieldValidator)ListView1.FindControl("RequiredFieldValidator1")).ControlToValidate = ((TextBox)ListView1.FindControl("grpNameTextBox")).ID;

在不同的事件中,但无法做到。

之后,我删除了Validation Control,并放置了简单的Label。然后在“ItemInserting”事件中,我输入了以下代码:

protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
    {
        TextBox t1 = (TextBox)ListView1.FindControl("grpNameTextBox"); // Getting Null Exception here
        if (t1.Text.Trim() == null)
        {
            throw new System.Exception("Field cannot be empty");


        }
    }

但是得到“对象引用未设置为对象的实例”。错误。谁能告诉我,我错在哪里?

.aspx 部分如下:

<InsertItemTemplate>
        <tr style="">
            <td>
                <asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
                    Text="Insert"  />
                <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                    Text="Clear" />
            </td>
            <td>
                &nbsp;</td>
            <td>
                <asp:TextBox ID="grpNameTextBox" runat="server" Text='<%# Bind("grpName") %>' />
                <asp:Label ID="lblError" runat="server" Text=""></asp:Label>
            </td>
        </tr>
    </InsertItemTemplate>

谢谢。

4

3 回答 3

0

您没有在列表视图中动态生成文本框 ID,因此您可以直接将 controlTovalidate 值赋予 aspx 页面中的“grpNameTextBox”。

将相同的 ValidationGroup 分配给 RequiredFieldValidator 以及 aspx 代码中的 Insert 按钮,无需验证代码。

于 2012-12-11T09:10:56.847 回答
0

文本框 txt_btn = (TextBox)e.Item.FindControl("grpNameTextBox");

于 2012-12-11T10:22:58.930 回答
0

尝试修改您的代码

  protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
  {
    TextBox t1 = (TextBox)e.Item.FindControl("grpNameTextBox"); 
    if(t1==null) return; // or exception
    Button btn = (Button)e.Item.FindControl("InsertButton");
    RequiredFieldValidator rfv = (RequiredFieldValidator)e.Item.FindControl("rfvId");
        if (rfv != null&& btn!=null)
        {
            rfv.ControlToValidate = t1.ClientID;
            rfv.ValidationGroup = rfv.ClientID + "ValidationGroup";
            btn.ValidationGroup = rfv.ClientID + "ValidationGroup";
        }

  }
于 2012-12-11T07:29:38.813 回答