none
如何做到...像檔案總管那樣,按下一個字母,即跳到那個字母開頭的目錄 RRS feed

  • 問題

  • 各位前輩:

    小弟的問題是這樣的,我有一個 DataGridView,其中有一個欄位叫做檔案名稱

    ,裡面紀錄很多的檔名,

    我想要做的是,像檔案總管那樣,按下一個字母,即跳到那個字母開頭的ROW

     

    我完全沒有頭緒,不知該如何做,請各位前輩指點小弟一下.......感謝大家

    2007年5月9日 上午 02:16

解答

  • Hi,提供意見參考看看

    如果您的DataGridView是搭配BindingSource來使用,也就是說DataGridView中顯示的是資料庫中取得的資料,您可以用BindingSource內提供的功能去尋找;例如下面的程式碼去移動BindingSource的Poistion值,並變動DataGridView指到的紀錄列

    Code Snippet

    Dim x As Integer = 0
            Select Case cboSerch.SelectedIndex
                Case Is = 0
                    x = BindingSource.Find("資料庫欄位一", txtSerch.Text)
                Case Is = 1
                    x = BindingSource.Find("資料庫欄位二", txtSerch.Text)
                Case Is = 1
                    x = BindingSource.Find("資料庫欄位三", txtSerch.Text)
                Case Is = 1
                    x = BindingSource.Find("資料庫欄位四", txtSerch.Text)
            End Select

            If x >= 0 Then
                BindingSource.Position = x
                DataGridView1.Rows(x).Selected = True
                DataGridView1.FirstDisplayedScrollingRowIndex = x
            End If

     

    補充一下,記得資料要先排序過,同樣名稱的才不會分散

     

    2007年5月9日 下午 03:19
    版主

所有回覆

  • Hi,提供意見參考看看

    如果您的DataGridView是搭配BindingSource來使用,也就是說DataGridView中顯示的是資料庫中取得的資料,您可以用BindingSource內提供的功能去尋找;例如下面的程式碼去移動BindingSource的Poistion值,並變動DataGridView指到的紀錄列

    Code Snippet

    Dim x As Integer = 0
            Select Case cboSerch.SelectedIndex
                Case Is = 0
                    x = BindingSource.Find("資料庫欄位一", txtSerch.Text)
                Case Is = 1
                    x = BindingSource.Find("資料庫欄位二", txtSerch.Text)
                Case Is = 1
                    x = BindingSource.Find("資料庫欄位三", txtSerch.Text)
                Case Is = 1
                    x = BindingSource.Find("資料庫欄位四", txtSerch.Text)
            End Select

            If x >= 0 Then
                BindingSource.Position = x
                DataGridView1.Rows(x).Selected = True
                DataGridView1.FirstDisplayedScrollingRowIndex = x
            End If

     

    補充一下,記得資料要先排序過,同樣名稱的才不會分散

     

    2007年5月9日 下午 03:19
    版主
  • 抱歉忘了提,要捕捉DataGridView的鍵盤事件,另外搜尋時要用模糊比對的方式。
    2007年5月9日 下午 03:25
    版主
  • 感謝前輩的指點喔~~~~

     

    2007年5月11日 上午 06:45