c#在datagridview上过滤数字

本文关键字:过滤 数字 datagridview | 更新日期: 2023-09-27 18:05:46

我有一个textbox,一个combobox和一个datagridview和datagridview上有一些数据。组合框携带有关datagridview列名的信息。当我在文本框上写文本时,datagridview将根据在组合框中的列名进行过滤。当我试图在文本框上写数字时,给出的代码不工作,它给了我一个错误,如

'无法在系统上执行'Like'操作。Double and System.String.'.

我必须在这里做的工作。

string rowFilter = string.Format("[{0}] like '%{1}%'", combobox.Text, textBox1.Text);
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = rowFilter;

c#在datagridview上过滤数字

这是合理的。不能对数字应用LIKE SQL运算符。

你可以这样修改:

double number;
string rowFilter = double.TryParse(textBox1.Text, out number) ?   
    string.Format("[{0}]='{1}'", combobox.Text, textBox1.Text) :
    string.Format("[{0}] like '%{1}%'", combobox.Text, textBox1.Text);

方法TryParse的双精度,当我们想从解析字符串创建双精度。如果可能,则该字符串是双精度类型的字符串表示形式,则该方法执行转换并返回true。转换后的数字存储在out变量中。当转换失败时,它返回false。考虑到这一点,并使用三元操作符?,我们可以在所有情况下创建正确的过滤器。