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;
这是合理的。不能对数字应用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
。考虑到这一点,并使用三元操作符?
,我们可以在所有情况下创建正确的过滤器。