2012-04-09 17 views
0

私はデータベースに合計70,000レコードを持っています。 現在、私はすべてのレコードをデータグリッドビューに表示します。 ですが、時間がかかりすぎます。 winform load をロードした後、最初の100レコードをロードしてから、バックグラウンドプロセスを使用してレコードを取得します。 これをdatagridviewにバインドします。 それは可能ですか?もしそうなら、私はこれをどのように達成するのですか?C#のバックグラウンドプロセスを使用してデータベースからレコードを取得しますか?

+0

はい可能です...いくつかのソースコードを表示してください...何を試しましたか?何がうまくいかないの? – Yahia

答えて

0

70000行がDataGridにバインドされても、エンドユーザーにはあまり意味がありません。全体のアプリケーションが減速し、メモリ使用量が増加する可能性があります。行がバックグラウンドで入力されても、ユーザーエクスペリエンスは非常に悪い可能性があります。

フィルタを使用して、ユーザーが表示できる行数を制限することをお勧めします。別のオプションを使用することですvirtual mode

+0

ありがとうthe_joric、私は最初の100のレコードを表示することを決めたユーザーがその時私はgridview.isそれは正しいロジックかどうか100新しいレコードを追加したときにスクロールダウン? –

0

データテーブルにlinqを使用すると、(ページングを使用して)表示する行しか取得できません。例:

DS.Tables[0].Select().Skip<DataRow>(pageItems * (PageNumber - 1)).Take<DataRow>(pageItems).CopyToDataTable(); 

pageItems、あなたの場合は100、PageNumberは選択されている現在のページです。この例では、データセットDSがあり、新しいデータテーブルに結果のコピーを取得しています。

+0

解決策を教えてくれてありがとう、しかし私のクライアントはページングを使いたくない。 –

+0

この場合、100行または200行のページングを使用して、アプリの処理速度が向上し、行数が増えたためにクライアントがページングに気付かないようにします。ユーザーがグリッドの1行目または最後の行に到達すると、ロードデータがトリガーされます。だから、いつでも100〜200行がグリッドに表示されます。 – Deb

関連する問題