基本上,我试图将验证控制放在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>
</td>
<td>
<asp:TextBox ID="grpNameTextBox" runat="server" Text='<%# Bind("grpName") %>' />
<asp:Label ID="lblError" runat="server" Text=""></asp:Label>
</td>
</tr>
</InsertItemTemplate>
感谢。
答案 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”);