我想通过包含数字数据的列过滤数据表,我正在尝试以下操作:
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'操作
输入的数据可以是任意数字或文字,但根据数据,只有过滤器会显示相关数字值。
答案 0 :(得分:2)
Price
列似乎已decimal
,但您提供了string
filterText.Text
来过滤它。
一种解决方案可能是使用CONVERT
,DataColumn.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) + "%'";
但正如我所说的那样,对于第二个,我不确定。