データバインドとポストバック
-
06-07-2019 - |
質問
これは、DataBindが質問を処理する一般的な方法です...
ObjectDataSourceに(aspxコードで)バインドされたGridViewを持つ単純なページがあります。
ObjectDataSourceによって呼び出されるSelect()関数を調べて、初期ロード時およびすべてのポストバック時に呼び出されることを確認できます。 GridViewのデータに影響するポストバックで発生するロジックがいくつかあります。変更を加えた後、ポストバックでGridView.DataBind()を呼び出します。
各ポストバックで発生する自動再バインドを防ぐ方法はありますか?これは、このコントロールにObjectDataSourceを使用できないことを意味しますか?
解決
あなたが探しているきめの細かい制御は不可能であり、コードビハインドが必要であるという点であなたは正しいです。 ASP.NETのデータソースオブジェクトは、a **の苦痛に過ぎません。使用すると、このような状況が何度も発生することがわかります。
検出される問題の一部は次のとおりです。
- 強く型付けされていない
- 柔軟性に欠ける(ご指摘のとおり)
- プレゼンテーションコードをマディアップ
コードビハインドですべてのデータアクセスを実行しましたが、振り返ることはありません。
他のヒント
私もこの自動バインディングと戦い、ここに自分の解決策を投稿すると思いました:
- " DataSourceID"を削除します。 ASPXページから、設定されていない場合、自動バインディングはありません
- DataBindingが必要な場合にのみCodeBehindでDataSourceIDを設定します。myGridView.DataSourceID=" MyDataSource&quot ;;
- myGridView.DataBind()を明示的に呼び出さないでください。データバインディングはPreRenderで自動的に行われます
これを理解するためにしばらく見てください、しかし今ではすべてがうまく動作します。
コンテキスト
ObjectDatasourceを使用するのは、Gridviewのすべてのページングおよびソートを自動的に処理するためです。 Linq2SQLでデータレイヤーを使用しており、Skip()およびTake()メソッドを使用して、GridViewの1ページを作成するために必要なデータ量のみを読み込みます。
ObjectDataSourceの SelectMethod および SelectCountMethod の使用
はい。データバインディングがいつ発生するかをその種の制御が必要な場合は、コードビハインドで行う必要があります。