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

VB中DataGridView的ID搜索与ComboBox排序实现咨询(需示例)

VB.NET DataGridView 搜索(按ID)与排序(ComboBox触发)实现示例

没问题!我给你写一个纯原生VB.NET实现的示例,完全不用LINQ这类集成方案,刚好满足你的需求。先简单说下实现思路:

  • 按ID搜索:手动遍历DataGridView的每一行,对比ID列的值与输入的搜索内容,匹配则显示该行,不匹配则隐藏
  • ComboBox触发排序:利用DataView的Sort属性,根据ComboBox选中的选项切换排序字段,实现名称/日期的排序

第一步:界面控件准备

你需要在窗体上添加以下控件,并设置好对应的Name属性:

  • DataGridView → 命名为 dgvData
  • TextBox → 命名为 txtSearchID(用于输入要搜索的ID)
  • Button → 命名为 btnSearch(触发搜索操作,Text设为“搜索ID”)
  • ComboBox → 命名为 cboSort(下拉选项添加“按名称排序”、“按日期排序”)

第二步:完整代码实现

1. 窗体加载时初始化测试数据

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' 创建一个DataTable作为数据源
    Dim dt As New DataTable()
    dt.Columns.Add("ID", GetType(Integer))
    dt.Columns.Add("名称", GetType(String))
    dt.Columns.Add("日期", GetType(Date))

    ' 添加测试数据
    dt.Rows.Add(1, "笔记本电脑", #2024/01/15#)
    dt.Rows.Add(2, "无线鼠标", #2024/02/20#)
    dt.Rows.Add(3, "机械键盘", #2024/01/05#)
    dt.Rows.Add(4, "显示器", #2024/03/10#)

    ' 将DataTable绑定到DataGridView
    dgvData.DataSource = dt
End Sub

2. 按ID搜索功能实现

Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    Dim searchID As String = txtSearchID.Text.Trim()

    ' 如果搜索框为空,显示所有行
    If String.IsNullOrEmpty(searchID) Then
        For Each row As DataGridViewRow In dgvData.Rows
            If Not row.IsNewRow Then
                row.Visible = True
            End If
        Next
        Return
    End If

    ' 遍历每一行,匹配ID则显示,否则隐藏
    For Each row As DataGridViewRow In dgvData.Rows
        If Not row.IsNewRow Then
            ' 获取当前行的ID值(转为字符串对比)
            Dim rowID As String = row.Cells("ID").Value.ToString()
            row.Visible = rowID.Equals(searchID, StringComparison.OrdinalIgnoreCase)
        End If
    Next
End Sub

3. ComboBox触发排序功能实现

Private Sub cboSort_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSort.SelectedIndexChanged
    ' 获取当前绑定的DataTable
    Dim dt As DataTable = DirectCast(dgvData.DataSource, DataTable)
    ' 创建DataView用于排序
    Dim dv As New DataView(dt)

    ' 根据ComboBox选中项设置排序规则
    Select Case cboSort.SelectedItem.ToString()
        Case "按名称排序"
            dv.Sort = "名称 ASC" ' ASC升序,DESC降序,可根据需求修改
        Case "按日期排序"
            dv.Sort = "日期 ASC"
    End Select

    ' 将排序后的DataView重新绑定到DataGridView
    dgvData.DataSource = dv
End Sub

代码说明

  • 搜索部分:完全手动遍历行,没有使用LINQ,通过控制行的Visible属性实现搜索过滤,简单直接
  • 排序部分:利用.NET原生的DataView对象的Sort属性,只需指定排序字段和排序方向(ASC升序/DESC降序),无需自己编写排序算法,符合你的要求
  • 测试数据是模拟的,你可以替换成自己的真实数据源(比如从数据库读取的DataTable)

内容的提问来源于stack exchange,提问作者HollySeater

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:58:33