VB.NET中如何通过ComboBox筛选DataGridView数据
正确实现方案
你的代码无法运行的核心问题是筛选条件的字符串拼接错误:你把VB的赋值运算符=直接写在了筛选字符串里,而且没有将ComboBox的选中项用单引号包裹(符合DataView筛选语法的要求),同时也没处理选中项为空的边界情况。
修正后的代码
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click ' 先判断ComboBox是否有选中项,避免空引用错误 If ComboBox2.SelectedItem Is Nothing Then MessageBox.Show("请先选择要筛选的游戏名称") Return End If Dim dt As DataTable Dim dv As DataView dt = DirectCast(DataGridView1.DataSource, DataTable) ' 构造正确的筛选条件字符串:将选中项用单引号包裹,转义可能存在的单引号 Dim filterStr As String = $"[Game Name] = '{ComboBox2.SelectedItem.ToString().Replace("'", "''")}'" dv = New DataView(dt, filterStr, "[Game Name] desc", DataViewRowState.CurrentRows) DataGridView1.DataSource = dv End Sub
关键说明
- 筛选条件构造:使用字符串插值(
$"")将ComboBox选中项用单引号包裹,这是DataView筛选文本类型字段的语法要求。 - 单引号转义:调用
Replace("'", "''")处理选中项中包含单引号的情况,避免筛选语句出现语法错误。 - 空值判断:先检查
ComboBox2.SelectedItem是否为空,防止程序抛出空引用异常。
内容的提问来源于stack exchange,提问作者Jitendra Kumar singh
相关产品推荐
相关产品推荐

