2010-11-25 10 views
0

ich eine sehr einfache Frage zu stellen:C# treeview und Textfeld

ich eine C# Homepage zu haben, die eine Baumansicht auf der linken Seite und neun Textfelder auf der rechten Seite hat.

Die Baumansicht wird aus Tausenden von Zeilen einer SQL-Tabelle mit 9 Spalten aufgefüllt.

Das Ziel: Klicken Sie auf ein Baumansichtselement, aktualisieren Sie die neun Textfelder und zeigen Sie jeden Wert der Spalte an.

Was ist der beste Weg, es zu tun? Soll ich alle Daten beim Laden der Seite in eine temporäre Datentabelle abrufen und die C# -Datentabelle beim Klicken auf eine Baumansicht abfragen? Oder soll ich eine Select-Anweisung an die SQL-Tabelle beim Klicken auf das Baumansichts-Element senden? Oder gibt es einen besseren Weg?

Diese Lösung wird von mehr als 15 Benutzern verwendet und die Leistung ist ein Schlüsselfaktor.

Danke,

FM

Antwort

1

Wenn die Baumansicht als

für alle Nutzer der Anwendung dieselbe ist

1- Auf dem Anwendungsereignis starten, füllen Sie die Daten in einem dataable und Laden in der Anwendung Variable.

2- Verwenden Sie die oben erstellte Anwendungsvariable, um das darin gespeicherte Datableet abzufragen.

3- Wenn Sie auf einen Knoten in der Strukturansicht klicken, zeigen Sie die Details durch Abfragen der gespeicherten Datentabelle an.

Dieses Appraoch würde gut funktionieren, wenn die Baumansicht nicht benutzerspezifisch ist, erhalten Sie den Leistungsvorteil, wenn Sie die Datenbankausfälle minimieren.

1

würde ich die Server Cache verwenden, um die Datentabelle zu speichern.

Die Treeview ist für jeden Benutzer gleich und der Cache enthält anwendungsweite Referenzen auf Objekte wie eine DataTable.

add:

Cache["MyTreeviewDataTable"] = MyTreeviewDataTable; 

abrufen:

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

aktualisieren: Sie sollten auch einen Blick auf die SqlDependency und SqlCachDependency Klassen, wenn Datenänderungen zu informieren.

Query Notifications in SQL Server (ADO.NET)

+0

Ok, danke. Es bedeutet, dass es besser ist, ein Speicherobjekt zu erstellen, als den Befehl sql jedes Mal auszuführen, wenn ein Benutzer auf ein Element klickt. – InfoLearner

+0

Auf jeden Fall! Der Cache passt perfekt zu Ihrer Anforderung. Es wird nur einmal beim Start der Anwendung erstellt und dauert so lange, bis alle Sitzungen gelöscht sind (oder iis neu gestartet wird). Sie müssen nur sicherstellen, dass Sie auch die Datentabelle im Speicher ändern, wenn Sie Änderungen an der TreeView vornehmen. Sie können es z. in eine Eigenschaft Ihrer MasterPage oder wo immer Sie von allen Seiten zugreifen können, müssen Sie die TreeView verwenden. Sie können prüfen, ob es NULL ist, und es dann aus der Datenbank laden. –

+0

Wenn der Benutzer eine Zeile aktualisiert und die Änderung an die Datenbank übergibt, aktualisieren alle anderen Benutzer veraltete Daten, was wirklich nicht sinnvoll wäre. In diesem Fall ist die Ausführung der SQL-Anweisung für jedes Baumansichtselement eine bessere Wahl? – InfoLearner