【发布时间】:2021-08-01 12:39:12
【问题描述】:
我正在构建一个 Windows 窗体应用程序。在这个应用程序中,我想根据组合框使用过滤器。我尝试了一些代码,但它给了我一个例外,Invalid Column 'drink'。饮料是我的类别之一。我怎么解决这个问题?我对应该在哪里使用表单中的代码感到困惑。组合框方法或页面加载方法
private void populateCat()
{
try
{
Con.Open();
string CatValue = CatCb2.SelectedValue.ToString();
string query = $"select * from ProductTbl where ProdCat={CatValue};";
SqlDataAdapter sda = new SqlDataAdapter(query, Con);
SqlCommandBuilder builder = new SqlCommandBuilder(sda);
var ds = new DataSet();
sda.Fill(ds);
ProdDGV.DataSource = ds.Tables[0];
Con.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
【问题讨论】:
-
你应该使用参数化查询。
-
感谢您的帮助@Olivier Rogier。但我仍然对此感到困惑。
-
@ImdadMiran 关于什么?例如,在控制文本更改事件处理程序(或组合框的 selecteindexchanged)上,您可以输入如下内容:
var ds = DataGridView.DataSource as BindingSource; if ( EditFilter.Text != "" ) { string filter = DefaultFilter.IsNullOrEmpty() ? "" : $"{DefaultFilter} AND"; ds.Filter = $"{filter} Message LIKE '*{EditFilter.Text}*'"; } else ds.Filter = DefaultFilter; DataGridView.ClearSelection();。其中 DefaultFilter 是一个实例变量,Message 是数据库列名。您确定数据库字段名称是drink吗?也许Drink?您需要我将其发布为详细答案吗? -
谢谢@OliverRogier 我发现了我的问题。
标签: c# winforms filter datagridview