- - PR -
GridViewとCustomValidator
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-12-13 11:00
お世話になっています。
また教えて下さい。 ページにGridview/編集ボタン/更新ボタンを配置し以下の処理をさせています。 ・画面初期状態では編集不可状態 ・編集ボタン押下で全行編集可能状態 ・チェックボックスで更新対象を選択し対象セル編集後、更新ボタン押下でDBに反映 ここでお聞きしたいのですが 1.ItemTemplateに配置したTxtboxに対し、CustomValidatorのonServerValidateで入力 チェックを行いエラーがあった場合は更新ボタン押下直前の状態テキストボックス編 集状態にしたいのですが、DBをもう一度読込みにいっているみたいで、編集前状態に なってしまう為、編集直後(更新ボタン押下直前)の状態にしたい。(皆さんはサー バ側のチェックはどのようにされているのでしょう?) 2.チェックボックスで選択された行のみ入力チェックを行いたい。 3.入力チェックはサーバー側で行いたい 理由は入力チェックでDBの内容を参照しに行く為。クライアントでも可能であれば クライアントと両方チェックがベターです。 現在の検証処理の状況 ・更新ボタン押下時のイベントの順序 Page_Init GridView1_RowCreated GridView1_RowCreated GridView1_RowCreated GridView1_RowCreated GridView1_RowCreated Page_Load CustomValidator1_ServerValidate CustomValidator1_ServerValidate btnupdate_Click SqlDataSource1_Selected GridView1_RowCreated GridView1_RowDataBound GridView1_RowCreated GridView1_RowDataBound GridView1_RowCreated GridView1_RowDataBound GridView1_RowCreated GridView1_RowDataBound GridView1_RowCreated GridView1_RowDataBound GridView1_PreRender ・更新ボタンコードとonServerValidateのコード Protected Sub btnupdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) If Page.IsValid = False Then Return 更新処理 End Sub Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) If args.Value.Length = 0 Then args.IsValid = False End If End Sub 検証処理以外はできています。上記の実現方法のご教授宜しくお願いします。 情報不足の点がありましたらご指摘下さい。 追記 マスターページ、SqlDataSource使用 VS2005 ASP.NET 2.0 VB.NET SQL SERVER 2005 |
|
投稿日時: 2007-12-14 06:37
1> ポストバックされたときにGridViewを再度バインドしなければ
TextBoxの値は保持されるのでは? (つまり、ユーザーが編集した状態の値が保持される) 2> CustomValidatorのClientValidationFunctionでCheckBoxの値を チェックできませんか。 3> CustomValidatorをAjax化する。 たとえば、ClientValidationFunctionからWebサービスを呼び出す・・・ あと、CustomValidatorにUpdatePanelを適用するとか・・・ この場合、ユーザーから見るとJavaScript側でDBのチェックを行っているように見えます。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 |
|
投稿日時: 2007-12-14 11:02
Access様
返信ありがとうございます。 >1> ポストバックされたときにGridViewを再度バインドしなければ > TextBoxの値は保持されるのでは? > (つまり、ユーザーが編集した状態の値が保持される) すいません。プログラムコード(GridView1.DataBind())でバインド処理をさせていれ ばチェックフラグを設けて、再バインドするかしないか切り替えることができると思 いますが、現在はプログラムコードで処理していません。プログラムコードを使用せ ずに再バインドを回避する方法はありませんか? 私の勘違いかもしれませんが、GridViewに表示されている内容が置き換わる(編集後 から編集前に)タイミングってGridView1_RowDataBoundであってますよね? >2> CustomValidatorのClientValidationFunctionでCheckBoxの値を > チェックできませんか。 以下URLを参考にできました。 http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=666346&SiteID=7 >3> CustomValidatorをAjax化する。 >たとえば、ClientValidationFunctionからWebサービスを呼び出す・・・ ClientValidationFunctionのクライアント検証で、Sql Serverにアクセスし値をチェ ックすることは可能なんでしょうか? >あと、CustomValidatorにUpdatePanelを適用するとか・・・ CustomValidatorにUpdatePanelを適用すると2>のCheckBoxの値をチェックするところ で"オブジェクト参照がオブジェクトインスタンスに設定されていません。"のエラー がでてしまいます。 宜しくお願いします。 |
|
投稿日時: 2007-12-14 11:12
すいません。更新ボタン押下時のイベントの順序で一部抜けておりました。
又、補足ですが実行行数は2行で行っています。 Page_Init GridView1_RowCreated GridView1_RowCreated GridView1_RowCreated GridView1_RowCreated GridView1_RowCreated Page_Load CustomValidator1_ServerValidate CustomValidator1_ServerValidate btnupdate_Click SqlDataSource1_Selected GridView1_RowCreated GridView1_RowDataBound GridView1_RowCreated GridView1_RowDataBound GridView1_RowCreated GridView1_RowDataBound GridView1_RowCreated GridView1_RowDataBound GridView1_RowCreated GridView1_RowDataBound GridView1_DataBound <−−ここが抜けてました。 GridView1_PreRender |
1