国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用DataGrid瀏覽數據相關實例

2019-11-18 12:00:36
字體:
來源:轉載
供稿:網友

  數據集
  
  Friend WithEvents Ds1 As DGDataViewSample.Dataset1
  
  Dataset1為項目中的數據集框架文件,結構包括兩個表:tablePerson和tableType
  
  數據庫連接變量
  
  Friend WithEvents ODC As System.Data.OleDb.OleDbConnection
  
  本例使用access數據庫,所以數據庫連接使用OleDbConnection類型。針對不同3數據庫類型,。NET提供不同的數據庫連接類。
  
  例如SQL Server數據庫需要使用SqlConnection,ODBC數據源使用OdbcConnection,Oracle數據庫需要使用OracleConnection.
  
  數據適配器
  
  Friend WithEvents ODDAPerson As System.Data.OleDb.OleDbDataAdapter
  
  Friend WithEvents ODDAType As System.Data.OleDb.OleDbDataAdapter
  
  與數據庫連接類似,對于不同的數據庫類型,需要使用不同的數據適配器類。
  
  例如SQL Server數據庫需要使用SqlDataAdapter,ODBC數據源使用OdbcDataAdapter,Oracle數據庫需要使用OracleDataAdapter.
  
  數據適配器的屬性可以通過工具欄添加,按照向導提示完成即可;可以在設計時在屬性窗口中進行配置;可以在編程時用代碼設置。一個數據適配器相當于一個數據通道,負責將數據源中的數據填充到相應的數據集或數據表中,在完成對數據集或數據表的修改之后,再通過數據適配器將更新后的數據提交到數據庫的源表中。通過修改相應的SQL語句,可以用編程控制數據適配器,使其匹配數據源中不同的表或視圖。
  
  本例為方便起見,為每一個表使用了單獨的數據適配器和數據視圖。
  
  數據視圖
  
  Friend WithEvents DVPerson As System.Data.DataView
  
  Friend WithEvents DVType As System.Data.DataView
  
  本例中使用數據視圖作為DataGrid的數據源。數據集和數據表也可以直接作為數據源使用。
  
  數據初始化:
  
  在初始化界面時,需要做兩件事情,一個是初始化數據(本例中為InitData過程),將數據源中的數據填充到數據實例中;另一個是適當設置窗口中的某些控件屬性(本例中為InitCtrl過程),以使數據能夠正確的顯示出來。
  
  初始化數據
  
  PRivate Sub InitData()
  
  Try
  
  ODC.Open()
  
  Catch ex As Exception
  
  MsgBox(ex.Message)
  
  application.Exit()
  
  End Try
  
  Try
  
  ODDAPerson.Fill(Ds1.tablePerson)
  
  ODDAType.Fill(Ds1.tableType)
  
  Catch ex As Exception
  
  MsgBox(ex.Message)
  
  Application.Exit()
  
  End Try
  
  End Sub
  
  初始化窗口控件
  
  Private Sub InitUI()
  
  LBTable.SelectedIndex = 0
  
  DG.Select(0)
  
  End Sub
  
  數據瀏覽導航:
  
  按鈕第一個
  
  Private Sub BFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BFirst.Click
  
  DG.UnSelect(DG.CurrentRowIndex)
  
  Dim dv As DataView
  
  dv = DG.DataSource
  
  If dv.Table.Rows.Count > 0 Then
  
  DG.CurrentRowIndex = 0
  
  DG.Select(DG.CurrentRowIndex)
  
  End If
  
  End Sub
  
  按鈕上一個
  
  Private Sub BPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BPrev.Click
  
  DG.UnSelect(DG.CurrentRowIndex)
  
  Dim dv As DataView
  
  dv = DG.DataSource
  
  If DG.CurrentRowIndex - 1 <;= 0 Then
  
  DG.CurrentRowIndex = 0
  
  Else
  
  DG.CurrentRowIndex = DG.CurrentRowIndex - 1
  
  End If
  
  DG.Select(DG.CurrentRowIndex)
  
  End Sub
  
  按鈕下一個
  
  Private Sub BNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BNext.Click
  
  DG.UnSelect(DG.CurrentRowIndex)
  
  Dim dv As DataView
  
  dv = DG.DataSource
  
  If DG.CurrentRowIndex + 1 >= dv.Table.Rows.Count Then
  
  DG.CurrentRowIndex = dv.Table.Rows.Count - 1
  
  Else
  
  DG.CurrentRowIndex = DG.CurrentRowIndex + 1
  
  End If
  
  DG.Select(DG.CurrentRowIndex)
  
  End Sub
  
  按鈕最后一個
  
  Private Sub BLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BLast.Click
  
  DG.UnSelect(DG.CurrentRowIndex)
  
  Dim dv As DataView
  
  dv = DG.DataSource
  
  DG.CurrentRowIndex = dv.Table.Rows.Count - 1
  
  DG.Select(DG.CurrentRowIndex)
  
  End Sub
  
  數據操作
  
  按鈕添加
  
  Private Sub BAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BAdd.Click
  
  Dim dv As DataView
  
  Dim rowNew As DataRowView
  
  dv = DG.DataSource
  
  rowNew = dv.AddNew()
  
  rowNew.EndEdit()
  
  DG.CurrentRowIndex = dv.Table.Rows.Count - 1
  
  DG.Select(DG.CurrentRowIndex)
  
  End Sub
  
  在調用AddNew添加一條新記錄之后,緊接著調用了EndEdit,這樣是表明這個添加操作已經完成,可以對這個新記錄進行其它任何操作了。在此調用之前,新記錄被認為是正在編輯的記錄,會被鎖定,這時對其進行刪除操作就會引發錯誤,而且這條記錄并不會真正的存入表中。在EndEdit調用之后,新記錄存入表中,但是行狀態被標志為新增記錄。
  
  這一步完成后,用戶一般會通過表格輸入新記錄的各個字段值。在程序中,實際上是將這個過程視做對新增記錄的修改。
  
  按鈕刪除
  
  Private Sub BDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BDel.Click
  
  Dim dv As DataView
  
  dv = DG.DataSource
  
  dv.Delete(DG.CurrentRowIndex)
  
  DG.Select(DG.CurrentRowIndex)
  
  End Sub
  
  按鈕保存
  
  Private Sub BSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BSave.Click
  
  Me.UpdateData()
  
  End Sub
  
  保存子過程
  
  Private Sub UpdateData()
  
  Dim addds As DataSet
  
  Dim delds As DataSet
  
  Dim updateds As DataSet
  
  Try
  
  addds = Ds1.GetChanges(DataRowState.Added)
  
  delds = Ds1.GetChanges(DataRowState.Deleted)
  
  updateds = Ds1.GetChanges(DataRowState.Modified)
  
  If addds Is Nothing Then
  
  Else
  
  ODDAPerson.Update(addds)
  
  ODDAType.Update(addds)
  
  End If
  
  If updateds Is Nothing Then
  
  Else
  
  ODDAPerson.Update(updateds)
  
  ODDAType.Update(updateds)
  
  End If
  
  If delds Is Nothing Then
  
  Else
  
  ODDAPerson.Update(delds)
  
  ODDAType.Update(delds)
  
  End If
  
  Catch ex As Exception
  
  MsgBox(ex.Message)
  
  Exit Sub
  
  End Try
  
  Try
  
  DVPerson.Table.AcceptChanges()
  
  DVType.Table.AcceptChanges()
  
  Ds1.AcceptChanges()
  
  Catch ex As Exception
  
  MsgBox(ex.Message)
  
  Exit Sub
  
  End Try
  
  End Sub
  
  * 在為DataTable調用AcceptChanges之后,將清除所有行的狀態標志,也就是說,程序將無法再區分哪些是新添加的,哪些是被修改后的。所以所有利用行狀態標志對數據源進行修改的操作都放在了此調用之前。
  
  * 將各種修改存回數據源的順序為:添加的行——被修改的行——被刪除的行。以免在操作時發生邏輯錯誤。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜南县| 休宁县| 榆林市| 石首市| 双桥区| 和静县| 临清市| 康马县| 行唐县| 大新县| 孟津县| 山东| 伊春市| 北流市| 垦利县| 乌兰察布市| 江口县| 无棣县| 托里县| 香格里拉县| 松滋市| 芜湖市| 澎湖县| 永宁县| 广德县| 新民市| 高邮市| 贵南县| 凌云县| 大宁县| 清原| 南乐县| 台北县| 宜春市| 平乡县| 武邑县| 宁国市| 仁怀市| 武义县| 万载县| 巴东县|