1

約2000行のデータビューがあります。ページの読み込み時に、データビューをオブジェクトデータグリッドにバインドします。

    dataGrid.DataSource = dv;
    dataGrid.DataBind();

ただし、時間応答は非常に高くなります(数分)。それを速くするために私は何ができますか?または、少なくともクライアントをフリーズできませんか?

4

3 に答える 3

2

最初にクエリを確認してください。取得できる限り高速になったら(一時テーブルなどで毎晩データを事前にキャッシュすることを含む)、ASP.NETコードに移動して高速化します。

可能であれば、グリッドのビューステートをオフにします。ビューステートにより、ページサイズが大幅に増加します。問題の一部は、生のHTMLとビューステートのMBを提供し、それをレンダリングすることです。

私が取るステップ:

  1. グリッドのビューステートをオフにします
  2. 列でテンプレートを使用している場合は、コントロールを組み合わせてテンプレートを切り詰めて、発生する重複バインディングの量を減らしてください。
  3. 可能な場合は、テンプレートでリテラルコントロールを使用します(ラベルよりも大幅に軽い)
  4. すべてのスタイリングを引き出し、cssを使用してページサイズも小さくするようにしてください。
  5. 行にjavascriptがある場合は、インラインスクリプトを削除し、Jqueryまたはその他の方法でページが読み込まれたら適用することを検討してください。
  6. データのページングについて考えてください

2k以上のレコードを1ページで機能させることはできますが、そのためには非常にタイトにする必要があります。

最後の手段として、グリッドを取り除き、リテラルコントロールを使用して、生のクリーンでタイトなhtmlを直接グリッドに出力します。この場合も、リテラルコントロールのビューステートをオフにしてください。

于 2009-11-17T02:13:10.293 に答える
0

dBからデータを返すのにかかる時間を確認してください。長すぎない場合、問題はおそらく2000行をレンダリングしようとしているページにあります。

もしそうなら、ページングは​​物事をスピードアップします。

于 2009-11-16T14:18:37.227 に答える
0

ある種のデフォルトのフィルターを使用して、クエリに戻すアイテムの数を減らします。画面上のその量のデータは、通常、とにかくユーザーエクスペリエンスを低下させ、デフォルトのフィルターはページのレンダリングを高速化します。ユーザーが2000行のデータを要求した場合は、データを取得させます...ただし、ページングは​​、クエリを実行して現在の「ページ」にないレコードを破棄するため、データグリッドを使用したページングは​​避けます。すべての2000レコードをバックアップします。したがって、ページングを20アイテムに設定した場合でも、クエリはすべての2000レコードを返し、ユーザーが新しいページを要求するたびに、グリッドは他の1980レコードを削除します...

于 2009-11-16T14:21:59.920 に答える