【问题标题】:ASP.NET CustomValidator OnServerValidate within datalist?数据列表中的 ASP.NET CustomValidator OnServerValidate?
【发布时间】:2012-11-05 22:41:46
【问题描述】:

我需要为数据列表中的一堆文本框使用自定义验证器,但是我不确定如何从数据列表中调用自定义验证器的“OnServerValidate”。

到目前为止,我正在数据列表的 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”

谢谢

【问题讨论】:

    标签: c# asp.net datalist customvalidator


    【解决方案1】:

    您不需要在运行时创建 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;
            }
        }
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多