ASP.NET CustomValidator OnServerValidate在datalist中?

时间:2012-11-05 22:41:47

标签: c# asp.net datalist customvalidator

我需要为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”

由于

1 个答案:

答案 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;
        }
    }

希望这有帮助!