C #: Использование одной таблицы данных для заполнения 2 различных комбинированных списков? - PullRequest
1 голос
/ 16 мая 2010

У меня есть 2 комбинированных списка в форме (form1), называемых combobox1 и combobox2.

Каждый комбинированный список должен заполняться данными, хранящимися в 2 разных таблицах на Sql server 2005: table1 и table2

Я имею в виду: combobox1 -> table1 combobox2 -> table2

Я заполняю таблицу данных правильными данными, а затем привязываю комбинированные списки к ней отдельно.

Моя проблема в том, что после заполнения 2 комбо оба имеют одинаковые данные, полученные из таблицы 2.

Это мой код:

        DataTable tb1 = new DataTable();

        //Filling tb1 with data got from table1
        combobox1.Items.Clear();
        combobox1.DataSource = tb1;
        combobox1.DisplayMember = "Name";
        combobox1.ValueMember = "ID";
        combobox1.SelectedIndex = -1;

        //filling tb1 with data got from table2
        combobox2.Items.Clear();
        combobox2.DataSource = tb1;
        combobox2.DisplayMember = "Name";
        combobox2.ValueMember = "ID";
        combobox2.SelectedIndex = -1;

Что не так?

Кажется, что если я получу 2 разные таблицы данных (tb1 и tb2), все будет хорошо.

Любые предложения, пожалуйста.

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 мая 2010

DataTable - это ссылочный тип, который означает, что когда вы назначаете tb1 для источника данных элемента управления, вы фактически назначаете ссылку / ссылку в памяти для DataSource. Поэтому, когда вы изменяете переменную tb1, вы изменяете саму ссылку. Поскольку вы изменяете только ссылку, DataSource по-прежнему смотрит на тот же DataTable, только теперь он имеет другой набор данных.

1 голос
/ 16 мая 2010

Создайте 2 отдельных DataView в DataTable () и свяжите каждый комбинированный список с DataView.

См. Класс DataView

...