один стол и два комбобокса - PullRequest
2 голосов
/ 09 февраля 2011

У меня есть:

Dim ds As DataSet = New DataSet
Dim dt As DataTable = New DataTable
adapter.Fill(ds, "Table")
dt = ds.Tables("Table")

cmbx1.DataSource = dt
cmbx1.DisplayMember = "field1"
cmbx1.ValueMember = "field2"

cmbx2.DataSource = dt
cmbx2.DisplayMember = "field1"
cmbx2.ValueMember = "field2"

Итак, когда я выбираю что-то из cmbx1, оно также выбирается в cmbx2.Почему это так?

Нужна ли мне копия dt для cmbx2, чтобы получить те же значения, но быть выбранными независимо?

1 Ответ

4 голосов
/ 09 февраля 2011

Это потому, что они имеют ссылку на один и тот же объект.

Используйте dt.Copy() для решения проблемы.

Новый DataTable с той же структурой (схемы таблиц и ограничений) и данными, что и у этого DataTable. Если эти классы были получены, копия также будет иметь те же производные классы. Методы Copy и Clone создают новый DataTable с той же структурой, что и исходный DataTable. Новый DataTable, созданный методом Copy, имеет тот же набор DataRows, что и исходная таблица, но новый DataTable, созданный методом Clone, не содержит DataRows.

...