您的位置:首页 > 职场人生

ADO.NET 2.0 - 如何使用 DataView 来排序数据

2006-10-24 14:21 441 查看
[align=left]欲通过 DataView 来排序 DataTable 中的数据,请采用下列方式: [/align]
[align=left] [/align]
[align=left]n 当您使用第三个多载版本的 DataView 构建函式来建立 DataView 对象时,即可使用 Sort 参数来决定要根据一或多字段来排序资料。您可以在字段名称之后加上关键词 ASC DESC 以便决定要根据此字段来递增递减排序,预设为递增排序。假如您要根据多个字段栏排序数据,请在各字段之间使用逗号(,)来加以分隔。[/align]
[align=left] [/align]
[align=left]n 您也可以在建立 DataView 对象之后再设定其 Sort 属性以便决定要如何排序数据。Sort 属性的设定方式与 Sort 参数的设定方式完全相同。[/align]
[align=left] [/align]
[align=left]n 您可以去设定 DataView 的 ApplyDefaultSort 属性,以便决定是否要根据主索引键来排序数据。如果您将 ApplyDefaultSort 属性设定成 True,表示要根据主索引键来排序数据;如果您将 ApplyDefaultSort 属性设定成 False(此为默认值),表示不要根据主索引键来排序数据。[/align]
[align=left] [/align]
[align=left]请注意,只有在 Sort 属性为 Null 参考或空字符串,以及当数据表已定义主索引键时,才会套用 ApplyDefaultSort 属性的设定。 [/align]



[align=left]图表1 [/align]
[align=left]程序范例 [/align]
[align=left] [/align]
[align=left]图表 1 所示的程序示范如何在执行阶段动态设定 DataView 的 Sort 属性,以便让用户能够通过一或两个字段来动态排序数据。兹将程序代码完整列示如下:[/align]
[align=left] [/align]
[align=left]Option Strict On
Imports System.Data.SqlClient
Public Class Form1
Private ds As New DataSet
Private dv As DataView

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' 利用SqlConnectionStringBuilder 对象来构建连接字符串。
Dim connectStringBuilder As New SqlConnectionStringBuilder()
connectStringBuilder.DataSource = "(local)SQLEXPRESS"
connectStringBuilder.InitialCatalog = "北风贸易"
connectStringBuilder.IntegratedSecurity = True

Try
Using cn As New SqlConnection(connectStringBuilder.ConnectionString)
cn.Open()

Dim cmdLiming As New SqlCommand( _
"SELECT 部门, 性别, 员工编号, 身份证字号, 姓名, 地址, 邮政编码, " & _[/align]
[align=left] "出生日期, 婚姻状况, 雇用日期, 起薪, 目前薪资, " & _
"加薪日期 FROM 章立民工作室", cn)

Using drLiming As SqlDataReader = cmdLiming.ExecuteReader()

ds.Load(drLiming, LoadOption.OverwriteChanges, _
New String() {"章立民工作室"})

' 将 BindingSource 组件系结至 DataSet 当中的「章立民工作室」资料表。
Me.BindingSource1.DataSource = ds.Tables("章立民工作室")

' 将 DataGridView 控件系结至 BindingSource 组件。
Me.DataGridView1.DataSource = Me.BindingSource1

End Using
End Using

For i As Integer = 0 To ds.Tables(0).Columns.Count – 1
ComboBoxSortColumn1.Items.Add(ds.Tables(0).Columns(i).ColumnName)
Next

For i As Integer = 0 To ds.Tables(0).Columns.Count – 1
ComboBoxSortColumn2.Items.Add(ds.Tables(0).Columns(i).ColumnName)
Next

' 建立 DataView 对象
dv = ds.Tables(0).DefaultView

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub

' 根据用户的选择来设定 DataView 对象的 Sort 属性
Private Sub btnSort_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSort.Click
Dim SortExpr As String
If ComboBoxSortColumn1.SelectedIndex > -1 Then
SortExpr = ComboBoxSortColumn1.SelectedItem.ToString & _
IIf(RadioButton1.Checked, " ASC", " DESC").ToString
If ComboBoxSortColumn2.SelectedIndex > -1 Then
SortExpr &= _
", " & ComboBoxSortColumn2.SelectedItem.ToString & _
IIf(RadioButton3.Checked, " ASC", " DESC").ToString
End If
dv.Sort = SortExpr
Else
MessageBox.Show("您至少必须选取排序的第一个字段")
End If
End Sub
End Class [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息