VB.NET中ListView加载数据和排序功能的实现
平时我们在VB.NET中开发数据库相关的程序都会用到DataGrid来显示数据,它的使用相对简单,也有排序的功能,基本能满一般的要求。但有时它并不能满足项目的功能需求,这时我们就想到了用ListView,虽然它的功能正是我们所要的,必竞它不是一个数据库的控件,不能像DataGrid那样通过简单的设置就可以显示数据,同时也没有排序的功能,这些就要我们自已用程序代码来实现了。前些天在开发一个项目时就写了一段使用ListView显示数据并实现排序的代码,简单地说一下它的实现原理:显示数据是通过循环读取数据记录,用ListView的Add方法将数据添加到ListView中;排序的功能是通过ListView列的点击事件来得到要排序的字段,再使用ORDER BY关键字组合SQL重新加载数据来实现排序的。欢迎使用VB.NTE的朋友一起交流,我的EMAIL是ztqas@126.com。
以下是程序所使用的数据库及控件的设置信息:
数据库名:Northwind(SQL SERVER 2000中自带的,如果没有此数据库请先建立)
表 名:Products(如果没有这个表,请使用后面附带的SQL语句建立)
窗 体 名:frmListViewDb
所用控件
Label 1个
属性:Text=ProductName:
-----------------------------------------------------
TextBox 1个
属性:Name=txtProductName
-----------------------------------------------------
Button 5个
(1) 属性:Name=btnFilter、Text=过滤
(2) 属性:Name=btnShowAll、Text=全部
(3) 属性:Name=btnSelAll、Text=全选
(4) 属性:Name=btnCancelSelAll、Text=取消全选
(5) 属性:Name=btnInsteadSel、Text=反选
(5) 属性:Name=btnInfo、Text=查看
ListView 1个
属性:Name=ListViewDb、View=Details、Sorting=None、GridLines=True,FullRowSelect=True,CheckBoxs=True,Size=856,416、Columns添加10个列,Width=150,Text分别为:ProductID,ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued
源程序:
Imports System.Data.SqlClient
Public Class frmListViewDb
Inherits System.Windows.Forms.Form
'定义数据库连接对象
Dim sdConn As New SqlConnection
Dim conString As String = "data source=127.0.0.1;initial catalog=Northwind;uid=sa;password=123456"
'定义记录db2ListView执行状态的变量
Dim Dbr As Integer
'定义记录默认排序方式的变量
Dim mySort As String = "ASC"
'定义记录默认排序字段的变量
Dim myField As String = "ProductID"
'定义记录上次排序的字段在LISTVIEW中的列ID的变量
Dim pOrderID As Integer = 0
'定义复选操作的相关变量
Dim i As Integer
Dim sCount As Integer
#Region " Windows 窗体设计器生成的代码 "
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
End Sub
'窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents txtProductName As System.Windows.Forms.TextBox
Friend WithEvents btnFilter As System.Windows.Forms.Button
Friend WithEvents btnShowAll As System.Windows.Forms.Button
Friend WithEvents ListViewDb As System.Windows.Forms.ListView
Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader5 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader6 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader7 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader8 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader9 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader10 As System.Windows.Forms.ColumnHeader
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents btnSelAll As System.Windows.Forms.Button
F