无法在asp.net中从Listview中检索控件

时间:2012-12-11 06:04:14

标签: asp.net listview

基本上,我试图将验证控制放在Listview中。但是,我无法指定ControlToValidate =“grpNameTextBox”。

我试图把

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

在不同的活动中,但无法做到。

之后,我删除了验证控件,并放入简单的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>

感谢。

3 个答案:

答案 0 :(得分: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";
        }

  }

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

TextBox txt_btn =(TextBox)e.Item.FindControl(“grpNameTextBox”);