Код: Выделить всё
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;
}
Код: Выделить всё
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 + "%'";
}
Как и следовало ожидать, заполнение нескольких "filters" TextBox переопределяет только уникальный RowFilter, который я использую. Но я хочу накопить эти фильтры и понятия не имею, как это сделать правильно.
Я мог бы написать отдельный метод для каждого текстового поля, чтобы избежать использования .Tag (и я не хочу идти таким путем), но даже в этом случае RowFilter будет заменяться один вход за другим.
Я видел очень похожий вопрос, но он не работает. способ написания разделяет методы для TextBox, и я бы хотел этого избежать. Ответы подразумевают форматирование строк для создания сложных фильтров строк,
но я уверен, что должен быть более чистый способ накопления значений фильтра.
Некоторая помощь в моем неуклюжем кодировании была бы очень полезна. оценил.
Подробнее здесь: https://stackoverflow.com/questions/786 ... a-dataview