我需要为datalist中的一堆文本框使用customvalidator,但是我不确定如何从datalist中调用customvalidator的“OnServerValidate”。
到目前为止,我正在我的datalist的ItemDataBound中动态创建自定义验证器(虽然我对另一种方式持开放态度):
protected void dataList_ItemDataBound(object sender, DataListItemEventArgs e)
{
CustomValidator cv = (CustomValidator) e.Item.FindControl("CustomValidator1");
cv.ControlToValidate = "txtTextBox1";
cv.ServerValidate += new EventHandler(CustomValidator1_ServerValidate);
}
但我的“cv.ServerValidate”行正在抛出错误。我不完全确定如何正确设置它以确保我们有一个“OnServerValidate”
由于
答案 0 :(得分:0)
您不需要在运行时创建CustomValidator,在模板中使用它会容易得多。以下是在EditItemTemplate中使用以验证文本框的示例代码:
<asp:DataList ID="DataList1" runat="server">
<EditItemTemplate>
<asp:TextBox ID="TextBoxNextActionDate" Text='<%# Bind("NextActionDate") %>' runat="server"
CssClass="gridTextBoxEdit140"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="TextBoxNextActionDate"
ErrorMessage='<% $resources:AppResource,NotValidDateTime %>' Display="Dynamic"
OnServerValidate="DateTimeCustomValidator_ServerValidate"></asp:CustomValidator>
</EditItemTemplate>
</asp:DataList>
这是处理程序:
protected void DateTimeCustomValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
DateTime d = new DateTime();
if (!DateTime.TryParse(args.Value, out d))
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
}
希望这有帮助!