У меня есть DataGrid для отображения таблицы из базы данных. Я также собираю свойства для фильтра.
Вот мой код:
private Dictionary<string, string> _conditions = new Dictionary<string, string>();
private void UpdateFilter()
{
var activeConditions = _conditions.Where(c => c.Value != null).Select(c => "(" + c.Value + ")");
DataView dv = DataGrid1.ItemsSource as DataView;
dv.RowFilter = string.Join(" AND ", activeConditions);
}
private void NameSearch_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
string filter = NameSearch.Text;
if (string.IsNullOrEmpty(filter))
_conditions["name"] = null;
else
_conditions["name"] = string.Format("NAME Like '%{0}%'", filter);
UpdateFilter();
}
private void CustomerNumberSearch_TextChanged_1(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
string filter = CustomerNumberSearch.Text;
if (string.IsNullOrEmpty(filter))
_conditions["nro"] = null;
else
_conditions["nro"] = string.Format("NRO Like '%{0}'", filter); //this should be "Begins with" not "Like"
UpdateFilter();
}
private void ActiveCustomer_Click_1(object sender, RoutedEventArgs e)
{
if (ActiveCustomer.IsChecked == true)
{
_conditions["active"] = string.Format("ACTIVE Like '%{0}%'", "1");
UpdateFilter();
}
else
{
_conditions["active"] = null;
UpdateFilter();
}
}
Как вместо одного параметра в текстовом поле "NRO Like '%{0}'", filter
:
private void CustomerNumberSearch_TextChanged_1(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
string filter = CustomerNumberSearch.Text;
if (string.IsNullOrEmpty(filter))
_conditions["nro"] = null;
else
_conditions["nro"] = string.Format("NRO Like '%{0}'", filter); //this should be "Begins with" not "Like"
UpdateFilter();
}
Я могу исключить все, кроме чисел, начинающихся с 2 и 3?
В столбце NRO
у меня есть:
1575
8589445
5465858
3545664
3545688
2894489
2686886
3898984
8978556
6548898
Я могу сделать флажок, но какие критерии фильтра оставить только?
3545664
3545688
2894489
2686886
3898984