2017-05-13 4 views
1

Grundfrage - ist es möglich, eine Combobox mit einer Datenquelle zu füllen und dann die Verbindung zur Datenquelle zu trennen, aber die Daten in der Combobox zu behalten? Dadurch können Sie Ihre ds.Tables [0] weiterverwenden, ohne dass dies Auswirkungen auf die zuerst aufgefüllte Combobox hat.Datenquelle nach dem Füllen der Combobox trennen

comboBox1.DataSource = ds.Tables[0]; 

(Die ds von MS SQL Server mit SqlDataAdapter bestückt ist)

+0

Es ist keine gute Idee, das Kombinationsfeld direkt mit dem Dataset zu verbinden. Holen Sie die Daten in eine Sammlung oder ein Wörterbuch und binden Sie sie stattdessen. – Yogi

+0

danke @Yogi, also von ds zur combobox collection? – Allstar

Antwort

1

Nein, ist es nicht möglich, ohne in irgendeiner Weise die Quelldaten zu kopieren. Die DataSource-Eigenschaft ist eine Referenz auf Ihre Datenmenge, Datentabelle oder ein anderes Objekt, nicht eine Kopie davon. Wenn Sie DataSource auf null setzen, werden alle Möglichkeiten für das Kombinieren der Daten, auf die verwiesen wird, entfernt.

Stattdessen könnte man leicht eine Kopie Ihrer Original-Tabelle unter Verwendung der geeigneten Methode zur Verfügung, in der Datatable-Klasse erstellen

comboBox1.DataSource = ds.Tables[0].Copy(); 

Dieses eine neue Kopie der Tabelle mit der tatsächlichen Struktur und Inhalte erstellen, aber es ist ein Kopieren Sie in einem anderen Speicherbereich die Informationen, die im ersten Objekt gespeichert sind. An diesem Punkt haben Sie zwei verschiedene Objekte im Speicher und Sie können die erste ändern, ohne die zweite zu beeinflussen.

Lassen Sie mich auch sagen, dass dies mit großen Tabellen nicht sehr schlau ist. Verwenden Sie diesen Ansatz nicht, wenn Ihre Tabelle aus naheliegenden Gründen viele Datensätze enthält.

Verwandte Themen