ASP.NET CustomValidator OnServerValidate в списъка с данни?

Трябва да използвам персонализиран валидатор за куп текстови полета в списък с данни, но не съм сигурен как да извикам „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“

Благодаря


person goalie35    schedule 05.11.2012    source източник


Отговори (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;
        }
    }

Надявам се това да помогне!

person Gregor Primar    schedule 05.11.2012