C# 在文本框中键入行筛选器时出现语法错误

C# 在文本框中键入行筛选器时出现语法错误,c#,sql,dataview,C#,Sql,Dataview,我正在尝试在gridview中搜索数据库。在文本框中键入任何内容时,会出现以下错误: 语法错误“like”运算符前缺少操作数 代码如下: private void txtGrid_TextChanged(object sender, EventArgs e) { DataView dv = new DataView(dt); dv.RowFilter = ""+cbGrid.Text + " like '%" + txtGrid.Text + "%'"; gridPlay

我正在尝试在gridview中搜索数据库。在文本框中键入任何内容时,会出现以下错误:

语法错误“like”运算符前缺少操作数

代码如下:

private void txtGrid_TextChanged(object sender, EventArgs e)
{
    DataView dv = new DataView(dt);
    dv.RowFilter = ""+cbGrid.Text + " like '%" + txtGrid.Text + "%'";
    gridPlayers.DataSource = dv;
}

我原以为可能是
,但我已经搜索并阅读了我能找到的所有其他相关问题。

听起来像是
cbGrid。Text
是一个空字符串。如果缺少操作数,那是因为没有提供它(它是空的)

一种可能的解决方案是确保仅在值不为空时运行筛选器,或者为其指定一个默认值

private void txtGrid_TextChanged(object sender, EventArgs e)
{
    if (!string.IsNullOrWhiteSpace(cbGrid.Text))    
    {
        // only run when not empty
        DataView dv = new DataView(dt);
        dv.RowFilter = ""+cbGrid.Text + " like '%" + txtGrid.Text + "%'";
        gridPlayers.DataSource = dv;
    }
}

cbGrid.Text的内容是什么?可能是当
cbGrid.Text
为空字符串时函数启动。您需要为该字符串构建一个解析器,以便可以清除行筛选器中的任何“非法”字符。您完全正确,错误主要是因为组合框开始为空。。。很好的解决方案。然而,当我搜索我的三行中的一行时,仍然会发生错误,它们都是nvarchar(30),我刚刚在将该行添加到组合框中时发现了拼写错误,问题得到了解决……非常感谢大家:)