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
相关产品推荐
相关产品推荐

