2

リピーター内にカスタムバリデーターがあります

<asp:Repeater runat="server" ID="lstRepeater" >
    <ItemTemplate>
        <asp:CustomValidator ID="cvValid" runat="server" CssClass="error" EnableClientScript="False" ErrorMessage="Invalid."></asp:CustomValidator>
        <asp:TextBox runat="server" ID="tbCustomAnswer"></asp:TextBox>
    </ItemTemplate>
</asp:Repeater>

テストとして、OnClick イベントで次のコードを試しました。

    foreach(RepeaterItem item in lstRepeater.Items)
    {
        CustomValidator cvValid= (CustomValidator)item.FindControl("cvValid");
        cvValid.IsValid = false;
    }

お察しのとおり、リピーターをデータバインドしていないため、エラー メッセージはページに表示されません。ただし、リピーターとデータソースを再構築するとすぐに、リピーター内の古い値がすべて失われます。これを回避する簡単な方法はありますか?この問題を処理するエレガントな方法は思いつきません。

4

1 に答える 1

1

OnServerValidate 関数が false を返すようにできないのはなぜですか?

 <asp:CustomValidator ID="cvValid" runat="server" CssClass="error"EnableClientScript="False" ErrorMessage="Invalid."OnServerValidate="ServerValidation" />

void ServerValidation (object source, ServerValidateEventArgs args)
 {
    args.IsValid = false;
 }
于 2009-04-30T19:09:58.797 に答える