You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:30:59