none
如何由畫面的grid取得dataset中的資料 RRS feed

  • 問題

  • 各位先進,

    dataset與grid作bind後,如何由gird上指到的資料,取得對應datatable中的row?

    2006年9月18日 上午 09:19

解答

  • Hi,以下你參考看看

    1.) 使用BindingSource 

    http://msdn2.microsoft.com/zh-tw/library/system.windows.forms.bindingsource.aspx

    可以用BindingSource來在設計階段產生具型別的DataSet,之後利用BindingSource.Current就會傳回一個DataRowView就是現在目前指到的紀錄

    2.) 利用BindingContext來取得CurrencyManager

    取得CurrencyManager之後利用CurrencyManager.Current一樣會傳回DataRowView指到目前記錄;而如何取得CurrencyManager,你可以上MSDN找一下資料,應該會有比較完整的說明

    下面是我自己用的部份Code

        Friend WithEvents CM As CurrencyManager

        Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            CN = New OleDb.OleDbConnection(My.Settings.XXXXXConnectionString)
            DA = New OleDb.OleDbDataAdapter("Select * from TableName", CN)
            MyDataSet = New DataSet
            DA.Fill(MyDataSet )
            DA.FillSchema(MyDataSet , SchemaType.Mapped)

            CM = Me.BindingContext(MyDataSet , MySataSet .Tables(0).TableName)
            AddHandler CM.CurrentChanged, AddressOf CM_CurrentChange

            Grid.DataSource = MyDataSet
            Grid.DataMember = MyDataSet .Tables(0).TableName
        End Sub
       
        Private Sub CM_CurrentChange(ByVal sender As Object, ByVal e As EventArgs)
            Dim D As DataRowView
            If CM.Count <= 0 Then
                Exit Sub
            End If
            D = CM.Current
        End Sub

    2006年9月19日 下午 04:49