- PR -

DataGridの中のCustomValidatorについて

1
投稿者投稿内容
ゆっきー
ベテラン
会議室デビュー日: 2006/04/21
投稿数: 65
投稿日時: 2007-03-14 14:30
vb.netでWEBアプリケーションの開発を行っています。
DataGridの各行にテキストボックスとCustomValidatorを2つずつおいて、片方のみが入力されているかのチェックを行っているのですが、片一方のCustomValidatorのOnServerValidateイベントの際に両方の値をチェック後、エラーの場合は両方のCustomValidatorのIsValidプロパティをfalseをセットしています。その場合、次の行のOnServerValidateイベントの際に前の行のIsValidプロパティを確認するとtrueに戻っています。
System.Web.UI.WebControls.ServerValidateEventArgsのIsValidプロパティにfalseをセットした場合は、プロパティの値は保持されていて問題ないのですが、DataGridの中ではCustomValidatorのIsValidプロパティに直接値をセットして保持させることはできないのでしょうか?

Public Sub Cv_List_ServerValidate(ByVal source As System.Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)



cv1.IsValid = false →保持されない
cv2.IsValid = false →保持されない

args.IsValid = false →保持される
howfar
会議室デビュー日: 2007/03/16
投稿数: 14
投稿日時: 2007-03-16 17:31
CustomValidatorを使うことより、直接javascriptを使った方がいいと思います

CustomValidatorなら、ダイナミック操作をサポートすることがよくないと思う


私日本語よくない、すみません
THREE-ONE
常連さん
会議室デビュー日: 2006/08/17
投稿数: 36
投稿日時: 2007-03-21 11:08
ServerValidateEventArgs の IsValid プロパティの値が true のまま処理を終了していて、それで上書きされるからでしょう。
OnServerValidate の結果が反映されるので、OnServerValidate 後に IsValid を false にすれば保存されます(例えば PreRender とか)
ですが、そんなことする意味はほとんどないので、素直に ServerValidateEventArgs の IsValid を false にしましょう。
ちなみに、DataGrid の内部だからとかいうのは全く関係ありません。
画面に直接配置しても同じです。


[ メッセージ編集済み 編集者: THREE-ONE 編集日時 2007-03-21 11:09 ]
ゆっきー
ベテラン
会議室デビュー日: 2006/04/21
投稿数: 65
投稿日時: 2007-03-28 09:13
THREE-ONEさん、howfarさん回答ありがとうございます。
レスが遅くなってすみません。
素直にServerValidateEventArgsのIsValidをfalseにする方向でいくことにしました。
1

スキルアップ/キャリアアップ(JOB@IT)