我有一个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;
答案 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
。鉴于并使用三元运算符?
,我们可以在所有情况下创建正确的过滤器。