简体   繁体   English

数据列表中的ASP.NET CustomValidator OnServerValidate?

[英]ASP.NET CustomValidator OnServerValidate within datalist?

I need to use a customvalidator for a bunch of textboxes within a datalist, however I'm unsure on how to call the customvalidator's "OnServerValidate" from within the datalist. 我需要为数据列表中的一堆文本框使用customvalidator,但是我不确定如何从数据列表中调用customvalidator的“ OnServerValidate”。

So far, I'm creating my customvalidators dynamically within my datalist's ItemDataBound (although I'm open to an alternate way): 到目前为止,我正在数据列表的ItemDataBound中动态创建我的customvalidators(尽管我可以采用其他方法):

protected void dataList_ItemDataBound(object sender, DataListItemEventArgs e)
{
     CustomValidator cv = (CustomValidator) e.Item.FindControl("CustomValidator1");
    cv.ControlToValidate = "txtTextBox1";
    cv.ServerValidate += new EventHandler(CustomValidator1_ServerValidate);
}

But my "cv.ServerValidate" line is throwing an error. 但是我的“ cv.ServerValidate”行抛出一个错误。 I'm not entirely sure how to properly set this up to ensure we have an "OnServerValidate" 我不完全确定如何正确设置此设置,以确保我们拥有“ OnServerValidate”

Thanks 谢谢

You don't need to create CustomValidator in runtime, it's much easier to use it inside template. 您无需在运行时中创建CustomValidator,在模板中使用它要容易得多。 Here is sample code for use inside EditItemTemplate to validate textbox: 这是在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> 

And here is handler: 这是处理程序:

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

Hope this helps! 希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM