2016-03-28 8 views
1

私は、SQL Serverからプロシージャを呼び出すと、私はpageload() このprocudureに一度記入ページの一時メモリにデータセットを保存するにはどうすればいいですか?

ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", ReportsBLL.GetProducts())); 
ReportViewer1.LocalReport.Refresh(); 

を持っている私のASPページに

public static DataTable GetProducts(int parmCategory = -1){} 

としてのDataTableを返す機能を持っているが、約8分かかりますデータベース からデータを取得するには、GetProducts からのデータをフィルタリングするためにボタンを押すと多くのフィルタリングを行いたいし、すべてのフィルタにprocureを呼び出してDBに連絡するロジックはありません

だから、私はデータを保存することができますどのように私は

+0

結果セットのページングを検討してください。サーバー_と_クライアントはより良いでしょう。 IMHO、あなたのコメントに基づいて、私は実際に使用する必要があるかどうかわからない_ _ "100000 rows" _。 – EdSF

答えて

0

それはどのくらいのデータを返すに依存pageloadでそれを取得し、ボタンを押しろ過でそれに対処たら。 それほど多すぎない場合は、次のようにしてセッション変数にデータを入れてください。 dataSet1というページの変数にデータを設定します。

Session["DataSet1"] = dataSet1; 

データが大量の場合は、フィルタリングの間にページを「リフレッシュ」することを検討してください。この方法であなたの記憶を吹き飛ばすことはありません。

+0

私のデータが非常に大きくない、DBから約8分のデータをロードすると言われました –

+0

その場合、各フィルタ間でページを「リフレッシュ」することをお勧めします。次に、ページングされたクエリを使用して負荷時間を制限してデータを減らします。これは一度に1000レコードしか返さないように結果を設定します。これはすべてをスピードアップします。何が返されるべきであるの合計が必要な場合は、最初に "カウント"を取得します。 – nythgar

+0

申し訳ありませんが、私は100000行以上のデータとそれをロードする必要があることを意味するのは理解できません –

関連する問題