熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

用DataGrid浏覽數據相關實例

2013-11-23 18:58:40  來源: Java核心技術 

  數據集
  
  Friend WithEvents Ds As DGDataViewSampleDataset
  
  Dataset為項目中的數據集框架文件結構包括兩個表tablePerson和tableType
  
  數據庫連接變量
  
  Friend WithEvents ODC As SystemDataOleDbOleDbConnection
  
  本例使用Access數據庫所以數據庫連接使用OleDbConnection類型針對不同數據庫類型NET提供不同的數據庫連接類
  
  例如SQL Server數據庫需要使用SqlConnectionODBC數據源使用OdbcConnectionOracle數據庫需要使用OracleConnection
  
  數據適配器
  
  Friend WithEvents ODDAPerson As SystemDataOleDbOleDbDataAdapter
  
  Friend WithEvents ODDAType As SystemDataOleDbOleDbDataAdapter
  
  與數據庫連接類似對於不同的數據庫類型需要使用不同的數據適配器類
  
  例如SQL Server數據庫需要使用SqlDataAdapterODBC數據源使用OdbcDataAdapterOracle數據庫需要使用OracleDataAdapter
  
  數據適配器的屬性可以通過工具欄添加按照向導提示完成即可可以在設計時在屬性窗口中進行配置可以在編程時用代碼設置一個數據適配器相當於一個數據通道負責將數據源中的數據填充到相應的數據集或數據表中在完成對數據集或數據表的修改之後再通過數據適配器將更新後的數據提交到數據庫的源表中通過修改相應的SQL語句可以用編程控制數據適配器使其匹配數據源中不同的表或視圖
  
  本例為方便起見為每一個表使用了單獨的數據適配器和數據視圖
  
  數據視圖
  
  Friend WithEvents DVPerson As SystemDataDataView
  
  Friend WithEvents DVType As SystemDataDataView
  
  本例中使用數據視圖作為DataGrid的數據源數據集和數據表也可以直接作為數據源使用
  
  數據初始化
  
  在初始化界面時需要做兩件事情一個是初始化數據(本例中為InitData過程)將數據源中的數據填充到數據實例中另一個是適當設置窗口中的某些控件屬性(本例中為InitCtrl過程)以使數據能夠正確的顯示出來
  
  初始化數據
  
  Private Sub InitData()
  
  Try
  
  ODCOpen()
  
  Catch ex As Exception
  
  MsgBox(exMessage)
  
  ApplicationExit()
  
  End Try
  
  Try
  
  ODDAPersonFill(DstablePerson)
  
  ODDATypeFill(DstableType)
  
  Catch ex As Exception
  
  MsgBox(exMessage)
  
  ApplicationExit()
  
  End Try
  
  End Sub
  
  初始化窗口控件
  
  Private Sub InitUI()
  
  LBTableSelectedIndex =
  
  DGSelect(
  
  End Sub
  
  數據浏覽導航
  
  按鈕第一個
  
  Private Sub BFirst_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles BFirstClick
  
  DGUnSelect(DGCurrentRowIndex)
  
  Dim dv As DataView
  
  dv = DGDataSource
  
  If dvTableRowsCount > Then
  
  DGCurrentRowIndex =
  
  DGSelect(DGCurrentRowIndex)
  
  End If
  
  End Sub
  
  按鈕上一個
  
  Private Sub BPrev_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles BPrevClick
  
  DGUnSelect(DGCurrentRowIndex)
  
  Dim dv As DataView
  
  dv = DGDataSource
  
  If DGCurrentRowIndex <= Then
  
  DGCurrentRowIndex =
  
  Else
  
  DGCurrentRowIndex = DGCurrentRowIndex
  
  End If
  
  DGSelect(DGCurrentRowIndex)
  
  End Sub
  
  按鈕下一個
  
  Private Sub BNext_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles BNextClick
  
  DGUnSelect(DGCurrentRowIndex)
  
  Dim dv As DataView
  
  dv = DGDataSource
  
  If DGCurrentRowIndex + >= dvTableRowsCount Then
  
  DGCurrentRowIndex = dvTableRowsCount
  
  Else
  
  DGCurrentRowIndex = DGCurrentRowIndex +
  
  End If
  
  DGSelect(DGCurrentRowIndex)
  
  End Sub
  
  按鈕最後一個
  
  Private Sub BLast_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles BLastClick
  
  DGUnSelect(DGCurrentRowIndex)
  
  Dim dv As DataView
  
  dv = DGDataSource
  
  DGCurrentRowIndex = dvTableRowsCount
  
  DGSelect(DGCurrentRowIndex)
  
  End Sub
  
  數據操作
  
  按鈕添加
  
  Private Sub BAdd_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles BAddClick
  
  Dim dv As DataView
  
  Dim rowNew As DataRowView
  
  dv = DGDataSource
  
  rowNew = dvAddNew()
  
  rowNewEndEdit()
  
  DGCurrentRowIndex = dvTableRowsCount
  
  DGSelect(DGCurrentRowIndex)
  
  End Sub
  
  在調用AddNew添加一條新記錄之後緊接著調用了EndEdit這樣是表明這個添加操作已經完成可以對這個新記錄進行其它任何操作了在此調用之前新記錄被認為是正在編輯的記錄會被鎖定這時對其進行刪除操作就會引發錯誤而且這條記錄並不會真正的存入表中在EndEdit調用之後新記錄存入表中但是行狀態被標志為新增記錄
  
  這一步完成後用戶一般會通過表格輸入新記錄的各個字段值在程序中實際上是將這個過程視做對新增記錄的修改
  
  按鈕刪除
  
  Private Sub BDel_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles BDelClick
  
  Dim dv As DataView
  
  dv = DGDataSource
  
  dvDelete(DGCurrentRowIndex)
  
  DGSelect(DGCurrentRowIndex)
  
  End Sub
  
  按鈕保存
  
  Private Sub BSave_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles BSaveClick
  
  MeUpdateData()
  
  End Sub
  
  保存子過程
  
  Private Sub UpdateData()
  
  Dim addds As DataSet
  
  Dim delds As DataSet
  
  Dim updateds As DataSet
  
  Try
  
  addds = DsGetChanges(DataRowStateAdded)
  
  delds = DsGetChanges(DataRowStateDeleted)
  
  updateds = DsGetChanges(DataRowStateModified)
  
  If addds Is Nothing Then
  
  Else
  
  ODDAPersonUpdate(addds)
  
  ODDATypeUpdate(addds)
  
  End If
  
  If updateds Is Nothing Then
  
  Else
  
  ODDAPersonUpdate(updateds)
  
  ODDATypeUpdate(updateds)
  
  End If
  
  If delds Is Nothing Then
  
  Else
  
  ODDAPersonUpdate(delds)
  
  ODDATypeUpdate(delds)
  
  End If
  
  Catch ex As Exception
  
  MsgBox(exMessage)
  
  Exit Sub
  
  End Try
  
  Try
  
  DVPersonTableAcceptChanges()
  
  DVTypeTableAcceptChanges()
  
  DsAcceptChanges()
  
  Catch ex As Exception
  
  MsgBox(exMessage)
  
  Exit Sub
  
  End Try
  
  End Sub
  
  * 在為DataTable調用AcceptChanges之後將清除所有行的狀態標志也就是說程序將無法再區分哪些是新添加的哪些是被修改後的所以所有利用行狀態標志對數據源進行修改的操作都放在了此調用之前
  
  * 將各種修改存回數據源的順序為添加的行——被修改的行——被刪除的行以免在操作時發生邏輯錯誤
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26069.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.