1.如何实现当我点击某一列列表头时整个datagrid按该列升序或降序排列
2.如何实现当我选择多列时,按我选择次序整个datagrid按依序升序或降序排列
假定你的数据控件是 ADO
Private Sub grdList_HeadClick(ByVal ColIndex As Integer)
Me.adoData.Recordset.Sort = Me.grdList.Columns(ColIndex).Caption
End Sub
Dim SortField As String
Dim strSort As String
set datagrid1.datasource=Rs
Private Sub dgRecord1_HeadClick(ByVal ColIndex As Integer)
Dim Icol As Integer
For Icol= 0 To datagrid1.Columns.Count - 1
If InStr(1, datagrid1.Columns(Icol).Caption, "▲") Then
datagrid1.Columns(Icol).Caption = Left(datagrid1.Columns(Iclo).Caption, Len(datagrid1.Columns(Icol).Caption) - 2)
End If
If InStr(1, datagrid1.Columns(Iclo).Caption, "▼") Then
datagrid1.Columns(Icol).Caption = Left(datagrid1.Columns(Icol).Caption, Len(datagrid1.Columns(Icol).Caption) - 2)
End If
Next
If SortField = datagrid1.Columns(ColIndex).Caption Then
If strSort = "asc" Then
strSort = "desc"
datagrid1.Columns(ColIndex).Caption = datagrid1.Columns(ColIndex).Caption & " ▼"
Else
strSort = "asc"
datagrid1.Columns(ColIndex).Caption = datagrid1.Columns(ColIndex).Caption & " ▲"
End If
Else
SortField = datagrid1.Columns(ColIndex).Caption
strSort = "asc"
datagrid1.Columns(ColIndex).Caption = datagrid1.Columns(ColIndex).Caption & " ▲"
End If
Rs.Sort = SortField & " " & strSort
End Sub
mark
我刚刚看了别人的整理的
是第一个问题
Public Sub sub_HeadSort(ByVal dgDataGrid As DataGrid, ByVal ColIndex As Integer)
---------------------------------------------------------------------
*
* 名称:sub_HeadSort
* 功能:该函数用来为datagrid表格排
* 用法:该函数用来为datagrid表格排序
*dgDataGrid为表格名称
*ColIndex 为表格的具体列
*
*
---------------------------------------------------------------------
Static b_Sort
Dim rsTemp As ADODB.Recordset
Set rsTemp = dgDataGrid.DataSource
rsTemp.Sort = rsTemp.Fields.Item(ColIndex).Name & VBA.IIf(b_Sort, " desc", "")
b_Sort = Not b_Sort
End Sub
mark