6

これは、DataBindがどのように機能するかについての一般的な質問です...

ObjectDataSourceに(aspxコードで)バインドされたGridViewを持つ単純なページがあります。

ObjectDataSourceによって呼び出されるSelect()関数を調べて、初期ロード時とすべてのポストバック時に呼び出されることを確認できます。ポストバックで発生し、GridViewのデータに影響を与えるロジックがいくつかあります。いくつかの変更を加えた後、ポストバックの後半でGridView.DataBind()を呼び出したいと思います。

各ポストバックで発生する自動再バインドを防ぐ方法はありますか?これは、このコントロールにObjectDataSourceを使用できないことを意味しますか?

4

3 に答える 3

12

あなたが探しているきめ細かいコントロールは不可能であり、コードビハインドが必要であるという点で、あなたは正しいです。ASP.NET のデータ ソース オブジェクトは、a** の苦痛に他なりません。それらを使用すると、このような状況が何度も発生することがわかります。

あなたが見つける問題のいくつかは次のとおりです。

  • 強く型付けされていない
  • 柔軟性がない(あなたが指摘したように)
  • プレゼンテーション コードをごちゃごちゃにする

私はすべてのデータ アクセスをコード ビハインドで行うことにしましたが、振り返ることはありません。

于 2009-05-06T19:17:06.107 に答える
9

私もこの自動バインディングと戦い、ここに私の解決策を投稿すると思いました:

  1. ASPX ページから「DataSourceID」を削除します。設定されていない場合、自動バインディングはありません。
  2. DataBinding が必要な場合にのみ、CodeBehind で DataSourceID を設定します。
  3. myGridView.DataBind() を明示的に呼び出さないでください。データバインディングは PreRender で自動的に行われます

これを理解するのにしばらく時間がかかりましたが、今ではすべて正常に動作します。

環境

Gridview のすべてのページング並べ替えを自動的に処理するため、ObjectDatasource を使用します。Linq2SQL でデータ レイヤーを使用しており、Skip() メソッドと Take() メソッドを使用して、GridView の 1 ページに入力するのに必要な量のデータのみを読み込みます。

ObjectDataSourceのSelectMethodSelectCountMethodの使用

于 2010-06-10T14:48:43.347 に答える
2

はい。データバインディングがいつ発生するかをそのように制御したい場合は、コードビハインドでそれを行う必要があります。

于 2009-05-06T19:15:36.407 に答える