#.net #vb.net #datagridview #filtering #bindingsource
#.net #vb.net #datagridview #фильтрация #bindingsource
Вопрос:
Для WinForms VB.В сетевом приложении я использую возможности фильтрации Bindingsource для фильтрации данных, которые отображаются в DataGridView. Источник привязки взят из набора данных, созданного с помощью конструктора, а данные поступают из базы данных Access с использованием JetEngine и .Net 3.5. Таким образом, в основном:
Datagridview.Datasource = xxBindingSource
xxBindingsource.Filter = "[extended filter string with multiple columns]"
Эта фильтрация работает нормально, однако теперь я включил несколько дополнительных столбцов в DataGridView, которые я тоже хотел бы отфильтровать. Конечно, когда я загружаю столбцы, добавленные вручную, в фильтр BindingSource, это не работает.
Я провел некоторое исследование и не смог найти какой-либо способ использовать синтаксис фильтрации BindingSource в DataGridView. Я хотел бы использовать этот синтаксис, хотя я разработал довольно приятный UserControl и класс вокруг него, чтобы обеспечить плавные, быстрые и простые возможности фильтрации. Есть предложения?
Другим вариантом было бы переписать эту часть и использовать какую-либо другую форму фильтрации. Кто-нибудь может указать мне на некоторые лучшие практики?
Комментарии:
1. Вы пробовали добавлять эти столбцы в свой
DataSet
перед привязкой?2. Могу ли я добавить столбец в DataSet, у которого есть база данных Access для источника? Мне не нужно, чтобы этот столбец попадал в саму базу данных, поскольку он не содержит дополнительной информации, только некоторые вычисленные / полученные значения.
3.
DataSet
Это просто объект в памяти после его извлечения из базы данных, вы можете делать с ним все, что захотите. Единственное место, где вы столкнулись бы с проблемой, — это если бы вы обновляли базу данных с помощью dataset и сгенерированного оператора update, который не знал бы о ваших изменениях.4. @Jack Спасибо за ответ! Что ж, это действительно так: я использую dataset в памяти для обновления базы данных. Используя просто tableadapter и отправив . Внесите изменения в таблицу. Можно ли изменить это, чтобы разрешить добавление столбца в DataSet?
Ответ №1:
На самом деле, Джек понял это правильно! Я узнал о DataColumn.Выражение и о добавлении столбца к DataTable в DataSet, который не повлиял на TableAdapter. Итак, я сделал именно это. Отлично, спасибо!