Использование нескольких BindingSources в одном DataTable - PullRequest
5 голосов
/ 21 октября 2008

У меня есть DataTable, который имеет логический столбец с именем [Invalid]. Мне нужно разделить эти данные на этот неверный столбец - допустимые строки могут быть отредактированы, недопустимые строки не могут. Мой первоначальный план состоял в том, чтобы использовать два BindingSources и установить свойство Filter (например, [Invalid] = 'false'), которое играет мне на руку, потому что у меня есть два DataGridView и поэтому мне все равно нужно два BindingSources.

Это не работает: BindingSources устанавливает свойство Filter, связанное с DataTable, поэтому оба BindingSources содержат одинаковые данные. Я собираюсь сделать две выборки из базы данных, или я могу делать то, что я хочу, с имеющимися у меня объектами?

Ответы [ 2 ]

5 голосов
/ 21 октября 2008

При привязке к DataTable вы фактически привязываетесь к его представлению по умолчанию (DataTable.DefaultView). И когда вы устанавливаете свойство Filter любого из BindingSource, вы устанавливаете свойство Filter представления по умолчанию, перезаписывая Filter, установленный другим BindingSource.

Итак, Deadcat ответ правильный : вам нужно привязать к двум различным представлениям в DataTable (одно из которых может быть DefaultView, если вы предпочитаете):

bindingSource1.DataSource = myDataTable;
bindingSource2.DataSource = new DataView(myDataTable);

или

bindingSource1.DataSource = new DataView(myDataTable);
bindingSource2.DataSource = new DataView(myDataTable);
5 голосов
/ 21 октября 2008

Не думаю, что вы можете сделать это так, как надеетесь.

Вы могли бы использовать два разных вида данных одного и того же набора данных и связать свои виды данных с ними?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...