过滤数据表编号列

时间:2016-01-08 12:12:49

标签: c# datagridview filter datatable

我想通过包含数字数据的列过滤数据表,我正在尝试以下操作:

string selected = colSelect.GetItemText(colSelect.SelectedItem);
if (filterText.Text.Length == 0) 
{
     data_table.DefaultView.RowFilter = string.Empty;
}
else
{
     data_table.DefaultView.RowFilter = string.Format("Price Like '%{0}%'", filterText.Text);

我已经尝试将第二个值转换为字符串,但没有运气,我收到错误:

  

无法在System.Decimal和System.String

上执行'Like'操作

输入的数据可以是任意数字或文字,但根据数据,只有过滤器会显示相关数字值。

1 个答案:

答案 0 :(得分:2)

Price列似乎已decimal,但您提供了string filterText.Text来过滤它。

一种解决方案可能是使用CONVERTDataColumn.Expression文档中对此进行了解释,

data_table.DefaultView.RowFilter = "CONVERT(Price, 'System.String') like '%" + filterText.Text + "%'";

我没有尝试过这个,但您可以将filterText.Text解析为decimal(如果它是有效的)并使用它;

data_table.DefaultView.RowFilter = "Price Like '%" + decimal.Parse(filterText.Text) + "%'";

但正如我所说的那样,对于第二个,我不确定。