サンプル ページの形式は次のとおりです。
*Validation Summary*
Label : [input]
Label : [input]
###############
# RadGrid #
###############
###############
# RadGrid #
###############
Label : [input]
[save button]
最初のバージョン:
- 保存ボタンを押すと、ページ全体がリロードされます。検証の概要はエラーで埋められ (またはそうでなく)、エラーのある入力は赤で表示されます。
- RadGrid (カスタム編集テンプレート) を開くと、ページ全体がリロードされ、保存ボタンが無効になります。
- 問題: グリッドを開くとページ全体がリロードされますが、これは顧客が望んでいるものではありません...?
2 番目のバージョン:
- radAjaxPanel を radgrids の周りに置いたので、グリッドを開くと、グリッドだけがリロードされます。問題: 保存ボタンが非アクティブになりません。
- 保存ボタンをクリックすると、ページ全体がリロードされます。
第 3 バージョン:
- 保存ボタンに radAjaxPanel を追加し、RadGrid が開いたり閉じたりしたときにこの radAjaxPanel をリロードする行(脚注を参照) を追加しました。
- ボタンが適切にアクティブ化/非アクティブ化されるようになりました。
- 問題: 保存ボタンを押しても、ボタンだけがリロードされ、一部のフィールドにエラーがある場合、それらは赤に変わりません。検証の概要は引き続き機能します。
第 4 バージョン:
- 保存ボタンが押されたときにページ全体をリロードする行(脚注) を追加しました。
- エラーのあるフィールドが赤に変わりました
- 問題: この余分なポストバックにより、検証の概要が消えます。
では、これらすべてのオプションをどのように連携させることができるかについてのアイデアはありますか?
簡単な解決策は、顧客に radAjaxPanel を放棄するよう説得することです (いずれにせよ、それらを間違って使用していると感じており、利点がほとんどないからです)。
プロジェクト全体のアーキテクチャはいくぶん複雑です ( Web フォームを使用して .net mvcをエミュレートします (!))。コードは質問を煩雑にするだけのように感じますが、特定の部分で詳細やコードが必要になると思われる場合は、お気軽にお問い合わせください。 .
MainRadAjaxPanel.ResponseScripts.Add(string.Format("$find('{0}').ajaxRequest();", MainRadAjaxPanel.ClientID));