Исключить значения «начиная с» из столбца в WPF DataGrid - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть 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

1 Ответ

0 голосов
/ 18 февраля 2020

Если кому-то интересно то же самое. Вот решение, которое я использовал в моем случае:

   private void CheckBox_Click(object sender, RoutedEventArgs e)
    {
        if (CheckBox1.IsChecked == true)
        {
            _conditions["criteria1"] = string.Format("NRO Like '2%' OR NRO Like '3%'");
            UpdateFilter();
        }
        else
        {
            _conditions["criteria1"] = null;
            UpdateFilter();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...