Как преобразовать тип столбца с данными для выполнения фильтра - PullRequest
0 голосов
/ 21 мая 2019

Итак, я пытаюсь отфильтровать мои данные с помощью BindingSource из моего datagridview, но моего столбца (баланс и неактивные дни) типа string также имеют Null value, и япытаюсь использовать операторы сравнения <=, >=

, но отображается ошибка System.Data.EvaluateException: 'Cannot perform '>=' operation on System.String and System.Int32.'

я пытался изменить valueType моего представления данных, dgv.Columns["Balance"].ValueType = typeof(Decimal); //it doesnt work

и пытался клонироватьмой набор данных и установка нового типа для моего клонированного набора данных

DataTable dtCloned = dt.Clone();
dtCloned.Columns["Balance"].DataType = typeof(Decimal);
dtCloned.Columns["Inactive Days"].DataType = typeof(Int32);
foreach (DataRow row in dt.Rows)
{
    dtCloned.ImportRow(row);
}

// error shown
System.ArgumentException: 'Input string was not in a correct format.Couldn't store <> in Debit Inactive Days Column.  Expected type is Int32.'

Вот мой код фильтра:

public void dgv_tabPage_content(DataGridView dgv, TabPage tabpage)
{
   BindingSource bs = new BindingSource();
   bs.DataSource = dgv.DataSource;

   string filter_DD1 = "[Acct Type] LIKE '%DD%' AND [Balance] <= 6000.00 AND [Inactive Days] >= 5";
   string filter_DD2 = "[Acct Type] LIKE '%DD%' AND [Balance] >= 6000.00 AND [Inactive Days] >= 3";

   bs.Filter = string.Format("{1} OR {2}", filter_DD1, filter_DD2);
   dgv.DataSource = bs;
}

Как я могу отфильтровать столбец со строковым типом с нулевым значением с помощью операторов сравнения?

1 Ответ

0 голосов
/ 21 мая 2019

Я не уверен, что это то, что вы имели в виду, но почему бы не использовать where is not null и затем ваш фильтр закрытия.

string filter = string.Format("[Task] is not null and LIKE '%{0}%'", tabpage.Text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...