Как накопить несколько значений RowFilter в DataView?C#

Место общения программистов C#
Anonymous
Как накопить несколько значений RowFilter в DataView?

Сообщение Anonymous »

Я использую DataGrid для отображения строк. Эти строки генерируются из DataView, связанного с моим DataGrid его объектом DataContext, вот метод, который заполняет строки DataGrid (из таблицы SQLite) ):

Код: Выделить всё

using (var cmd = new SQLiteCommand(str_query))
{
SQLiteDataAdapter sda = new SQLiteDataAdapter();
handleConn(sqliteconn);
sda.SelectCommand = cmd;
cmd.Connection = sqliteconn;
ds.Clear();
sda.Fill(ds);
DataTable dttb = ds.Tables[0];
DataRow[] filteredRows = dttb.Select("project_completed  1");
DataTable filtered_dttb = dttb.Clone();
foreach(DataRow row in filteredRows)
{
filtered_dttb.ImportRow(row);
}
projectsDataGrid.DataContext = filtered_dttb.DefaultView;
}
В заголовках столбцов DataGrid я показываю текстовые поля, чтобы пользователь мог ввести некоторый текст, который будет действовать как фильтр для отображения только совпадающих строк. . Пока все хорошо, главный принцип работает. Но поскольку я ленив, я хотел использовать уникальный метод для всех «фильтров» моего TextBox:

Код: Выделить всё

private void FilterTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox t = (TextBox)sender;
DataView dv = projectsDataGrid.DataContext as DataView;
string filterstring = t.Text;
dv.RowFilter = t.Tag + " LIKE '%" + filterstring + "%'";
}
Я использую жестко запрограммированный TextBox.Tag для получения имени столбца, поскольку мне не удалось получить его из TextBox каким-либо другим означает (и у меня такое ощущение, что это крайне некрасиво).
Как и следовало ожидать, заполнение нескольких "filters" TextBox переопределяет только уникальный RowFilter, который я использую. Но я хочу накопить эти фильтры и понятия не имею, как это сделать правильно.
Я мог бы написать отдельный метод для каждого текстового поля, чтобы избежать использования .Tag (и я не хочу идти таким путем), но даже в этом случае RowFilter будет заменяться один вход за другим.
Я видел очень похожий вопрос, но он не работает. способ написания разделяет методы для TextBox, и я бы хотел этого избежать. Ответы подразумевают форматирование строк для создания сложных фильтров строк,
но я уверен, что должен быть более чистый способ накопления значений фильтра.
Некоторая помощь в моем неуклюжем кодировании была бы очень полезна. оценил.

Подробнее здесь: https://stackoverflow.com/questions/786 ... a-dataview

Вернуться в «C#»