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





Не думаю, что у вас получится так, как вы надеетесь.
Вы можете использовать два разных представления одной и той же таблицы данных и привязать к ним свои представления данных?
Когда вы привязываетесь к DataTable, вы фактически привязываетесь к его представлению по умолчанию (DataTable.DefaultView). И когда вы устанавливаете свойство Filter любого BindingSource, вы устанавливаете свойство Filter представления по умолчанию, перезаписывая фильтр, установленный другим BindingSource.
Итак, Ответ deadcat правильный: вам нужно привязать к двум различным представлениям DataTable (одно из которых может быть DefaultView, если вы предпочитаете):
bindingSource1.DataSource = myDataTable;
bindingSource2.DataSource = new DataView(myDataTable);
или же
bindingSource1.DataSource = new DataView(myDataTable);
bindingSource2.DataSource = new DataView(myDataTable);