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]
[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]
相关文章推荐
- ADO.NET 2.0 - 如何使用 DataView 来排序数据
- ADO.NET 2.0 - 如何使用 DataView 来筛选数据
- ADO.NET 2.0 - 如何使用 DataView 来筛选数据
- ADO.NET 2.0 - 如何使用 DataView 来筛选数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 使用ADO.NET2.0提升数据交互性能(4)
- 使用ADO.NET2.0提升数据交互性能
- 使用asp.net 2.0的CreateUserwizard控件如何向自己的数据表中添加数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 使用ADO.NET2.0提升数据交互性能 DataSet 数据表
- ADO.NET 2.0:如何排除错误信息「当目前没有数据时,尝试读取无效」(C#)
- 使用ADO.NET2.0提升数据交互性能(1)
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- [转贴]使用ADO.NET2.0提升数据交互性能(http://dotnet.chinaitlab.com/ADONET/739268.html)
- 使用ADO.NET2.0提升数据交互性能(1)
- ADO.NET 2.0 - 如何建立一个 DataView
- ADO.NET 2.0:如何排除错误信息「当目前没有数据时,尝试读取无效」(C#)
- 使用ADO.NET2.0提升数据交互性能(2)
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据