C#在datagridview上过滤数字

时间:2015-08-01 06:23:28

标签: c# datagridview filter

我有一个textbox,一个combobox和一个datagridview,datagridview上有一些数据.Combobox带有关于datagridview coloumn名称的信息。当我在textbox上写文本时,datagridview将根据在combobox中的列名进行过滤。当我尝试在文本框上写入数字时,给出的代码不起作用它给了我类似的错误

  

'无法对System.Double和System.String执行'Like'操作。'。

我必须在这里工作。

string rowFilter = string.Format("[{0}] like '%{1}%'", combobox.Text, textBox1.Text);

(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = rowFilter;

1 个答案:

答案 0 :(得分:1)

这是合理的。您不能将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);

当我们想要解析字符串以创建double时,使用double的方法TryParse。如果可能,则字符串是double的字符串表示形式,然后该方法执行转换并返回true。转换后的数字存储在out变量中。当转换失败时,它会返回false。鉴于并使用三元运算符?,我们可以在所有情况下创建正确的过滤器。