请问如何使DataGird控件通过单击表头就能就此字段进行排序?

解决方案 »

  1.   

    我的程序里的一段,刚好符合你的要求:Private Sub dgOverTime_HeadClick(ByVal ColIndex As Integer)
    With DEAttend.rsOverTime
        If .State Then
            Select Case ColIndex
                Case 0
                    If .Sort = "ticketno" Then
                    .Sort = "ticketno desc"
                    Else
                    .Sort = "ticketno"
                    End If
                Case 1
                    If .Sort = "workid" Then
                    .Sort = "workid desc"
                    Else
                    .Sort = "workid"
                    End If
                Case 2
                    If .Sort = "name" Then
                    .Sort = "name desc"
                    Else
                    .Sort = "name"
                    End If
            End Select
        End If
    End With
      

  2.   

    这是我的一个程序里的一段,下午急着下班,也没有解释。那是datagrid绑定到的recordset。
      

  3.   

    to victorycyz(中海):
       你用过其他的网格控件吗?
      

  4.   

    此问题已由我自主解决了!早知如此就不在此散分了!Dim st as integer,ct as integerPrivate Sub Dgd1_HeadClick(ByVal ColIndex As Integer)
     Dim scol As Integer
     scol = Dgd1.LeftCol
     s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &_ 
     App.Path "\data.mdb;Persist Security Info=False"
     Adc1.ConnectionString = s
     If ColIndex = st Then
      ct = ct + 1
     Else
      st = -1
     End If
     If ct Mod 2 = 0 Then
      Adc1.RecordSource = "select " & b & " from Savings order by " & Dgd1.Columns &_ 
      (ColIndex).Caption
     Else
      Adc1.RecordSource = "select " & b & " from Savings order by " & Dgd1.Columns &_
      (ColIndex).Caption & " desc"
     End If
     Adc1.Refresh
     Dgd1.Refresh
     st = ColIndex
     Dgd1.LeftCol = scol
    End Sub
      

  5.   

    其实,你可以借鉴victorycyz(中海)的做法,代码简单,可行。
      

  6.   

    我看还是别用datagrid了,msflexgrid比它好多了。
      

  7.   

    msflexgrid也得写这样的代码,各有所长,各有所好;
    但是,我觉得,不应该发牢骚,大家切磋技艺吗??
    你觉得呢?