none
GridViewデータ更新時にDetailsViewのValidationを避ける方法 RRS feed

  • 質問

  • Webアプリケーションの画面上に、

    データの登録・修正をするためのDetailsViewとGridViewをそれぞれ1つずつ配置しています。


    【使用しているフィールド】
    DetailsView(データ1件/登録処理のみ)
      テーブルAの項目(コードA、名称A)
    GridView(データ複数件/データ編集・削除処理)
      テーブルBの項目(コードB、名称B)

     

    コードAの登録必須チェックを行いたいので、テンプレートの編集から、
    コードAの「InsertItemTemplate」に、必須チェック用検証項目「RequiredFieldValidator」をセットしました。
    (コードA未入力状態で「登録」をすると、エラーチェックが正常に動作します)

     


    この状態の場合に、GridViewのコードBを「編集」→「更新」を押した場合、
    DetailsViewの検証を行いたくないのですが、コードAの必須入力エラーに引っかかってしまいます。

     

    そこで、GridView「更新」の場合は、DetailsViewのデータ検証を避けたいのですが、
    その方法・解決事例がありましたら、ご教授のほどよろしくお願いします。

    2009年1月9日 7:13

回答

  • 各コントロールにあるValidationGroupプロパティをそれぞれに設定すれば大丈夫かと。

     

    DetailsViewのValidationGroupをDV1として、

    RequiredFieldValidatorのValidationGroupを同じDV1にセットして

    GridViewのValidationGroupをGV1にしてみてください。

     

    GV1の設定は不要かもしれませんが、GridView側でValidationしたくなった時には

    必要になるはずです。

    2009年1月9日 7:59
  • おはようございます!(^^)!ふ~です。

     

     ゆりまつ さんからの引用

    Webアプリケーションの画面上に、

    データの登録・修正をするためのDetailsViewとGridViewをそれぞれ1つずつ配置しています。

     

    私の言うことでは無いのですが、Webアプリケーションは、『ASP.NET関連の話題』のMSDNフォーラムでの展開が良いのではと思います。ここでは、C#のWindowsアプリケーション関連の話題が多いと思われます。

     

    ◇ご参考資料

    「Webアプリケーション構築技法」赤間信幸 著書 P105 ご参照

    Webアプリケーションの入力検証コントロール
    『同一ページ上の複数のデータ入力フォームの取り扱い』
    1.ValidationGroupプロパティにより検証作業をグルーピングする。
         このことで、ボタンクリック時にグルーピングした入力検証が
         関連付けられる。
    2.当該ボタンのCauseValidationプロパティをfalseに変更すると
         入力検証は行われない。

    この本に少々ご説明がございました。

    2009年1月9日 22:43
  • お世話になります。

    連休を挟んでしまいご報告が遅れましたが、無事に解決いたしました。

     

    GridViewとDetailsViewのValidationGruopをそれぞれ別々に設定したら、

    エラー検証の切り分けが可能になりました!

     

    ValidationGruopの設定も少し疑ってはいたのですが、思った様な動きをしてくれずスルーしておりました。

    こちらのレスを確認して、全体をもう一回見直したのですが、

    登録・編集・削除・キャンセルボタンに当たる「CommandField」のValidationGruopが空欄になっており

    それが原因で、うまく動いておりませんでした。

     

    Z9M9Z様、!(^^)!ふ~ 様、ご指導のほどありがとうございました。

     

    [追記]

    >Webアプリケーションは、『ASP.NET関連の話題』のMSDNフォーラムでの展開が良いのでは

    >と思います。ここでは、C#のWindowsアプリケーション関連の話題が多いと思われます。

    もう少し、Webアプリに関して調べたいことがあるので、それらは「ASP.NET…」に投稿してみます!

    また、本の紹介もありがとうございました。
    2009年1月13日 9:04

すべての返信

  • 各コントロールにあるValidationGroupプロパティをそれぞれに設定すれば大丈夫かと。

     

    DetailsViewのValidationGroupをDV1として、

    RequiredFieldValidatorのValidationGroupを同じDV1にセットして

    GridViewのValidationGroupをGV1にしてみてください。

     

    GV1の設定は不要かもしれませんが、GridView側でValidationしたくなった時には

    必要になるはずです。

    2009年1月9日 7:59
  • おはようございます!(^^)!ふ~です。

     

     ゆりまつ さんからの引用

    Webアプリケーションの画面上に、

    データの登録・修正をするためのDetailsViewとGridViewをそれぞれ1つずつ配置しています。

     

    私の言うことでは無いのですが、Webアプリケーションは、『ASP.NET関連の話題』のMSDNフォーラムでの展開が良いのではと思います。ここでは、C#のWindowsアプリケーション関連の話題が多いと思われます。

     

    ◇ご参考資料

    「Webアプリケーション構築技法」赤間信幸 著書 P105 ご参照

    Webアプリケーションの入力検証コントロール
    『同一ページ上の複数のデータ入力フォームの取り扱い』
    1.ValidationGroupプロパティにより検証作業をグルーピングする。
         このことで、ボタンクリック時にグルーピングした入力検証が
         関連付けられる。
    2.当該ボタンのCauseValidationプロパティをfalseに変更すると
         入力検証は行われない。

    この本に少々ご説明がございました。

    2009年1月9日 22:43
  • お世話になります。

    連休を挟んでしまいご報告が遅れましたが、無事に解決いたしました。

     

    GridViewとDetailsViewのValidationGruopをそれぞれ別々に設定したら、

    エラー検証の切り分けが可能になりました!

     

    ValidationGruopの設定も少し疑ってはいたのですが、思った様な動きをしてくれずスルーしておりました。

    こちらのレスを確認して、全体をもう一回見直したのですが、

    登録・編集・削除・キャンセルボタンに当たる「CommandField」のValidationGruopが空欄になっており

    それが原因で、うまく動いておりませんでした。

     

    Z9M9Z様、!(^^)!ふ~ 様、ご指導のほどありがとうございました。

     

    [追記]

    >Webアプリケーションは、『ASP.NET関連の話題』のMSDNフォーラムでの展開が良いのでは

    >と思います。ここでは、C#のWindowsアプリケーション関連の話題が多いと思われます。

    もう少し、Webアプリに関して調べたいことがあるので、それらは「ASP.NET…」に投稿してみます!

    また、本の紹介もありがとうございました。
    2009年1月13日 9:04