2010-11-25 20 views
0

私は聞いて非常に簡単な質問があります:私は右側に左側のツリービューと9つのテキストボックスを持っているC#のWebページを持っているC#のツリービューとテキストボックス

を。

ツリービューには、9列のSQLテーブルの何千もの行が移入されます。

目的: ツリービュー項目をクリックすると、9つのテキストボックスが更新され、各列の値が表示されます。

どのような方法が最適ですか? 一時的なデータテーブルのページ読み込み時にすべてのデータを取得し、ツリービューのクリック時にC#データテーブルをクエリする必要がありますか? または、ツリービュー項目のクリック時にSQLテーブルにselect文を送信する必要がありますか? 良い方法がありますか?

このソリューションは15人以上のユーザーが使用し、パフォーマンスが重要な要素です。

おかげで、

FM

答えて

1

ツリービューは、アプリケーションで

の1-よりも、あなたのアプリケーションのすべてのユーザーに対して同じである場合は、イベントを起動し、アプリケーション変数にdataableとストア内のデータを埋めます。

2-これまでに作成されたアプリケーションを使用して、そこに保存されているデータを照会することができます。

3-ツリービューのノードをクリックすると、格納されたデータテーブルを照会して詳細を表示します。

このappraochはうまくいきます。ツリービューがユーザー固有でない場合は、データベースのトリップを最小限に抑えてパフォーマンス上のメリットが得られます。

1

私はDataTableのを保存するためにServer Cacheを使用します。

Treeviewはすべてのユーザーで同じです。キャッシュは、DataTableなどのオブジェクトに対するアプリケーション全体の参照を保持します。

追加:

Cache["MyTreeviewDataTable"] = MyTreeviewDataTable; 

を取得:

DataTable MyTreeviewDataTable = (DataTable)Cache["MyTreeviewDataTable"]; 

更新:また、ときにデータの変更を通知するSqlDependencySqlCachDependencyクラスを見ている必要があります。

Query Notifications in SQL Server (ADO.NET)

+0

よろしくお願いいたします。これは、ユーザーが項目をクリックするたびにsqlコマンドを実行するのではなく、メモリー・オブジェクトを作成する方が良いことを意味します。どんなレートでも – InfoLearner

+0

!キャッシュはあなたの必要条件に完全に合っています。アプリケーションの開始時に1回だけ作成され、すべてのセッションが破棄される(またはiisが再開される)まで続きます。 TreeViewを変更するときにメモリ内のDatatableも変更する必要があります。あなたはそれを置くことができますf.e. TreeViewを使用する必要があるすべてのページからMasterPageのプロパティにアクセスすることができます。 NULLかどうかを事前に確認し、データベースからロードできます。 –

+0

ユーザーが行を更新してデータベースに変更を送信した場合、他のすべてのユーザーは失効したデータを更新しますが、これは実際には役に立ちません。その場合、各ツリービュー項目でSQL文を実行して、より良い選択を選択していますか? – InfoLearner

関連する問題