中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
用DataGrid浏览数据
作者:未知 时间:2005-07-27 21:42 出处:CSDN 责编:chinaitpower
              摘要:用DataGrid浏览数据

数据相关实例:

 

 

数据集

    Friend WithEvents Ds1 As DGDataViewSample.Dataset1

 

 

    Dataset1为项目中的数据集框架文件,结构包括两个表:tablePersontableType

 

 

数据库连接变量

    Friend WithEvents ODC As System.Data.OleDb.OleDbConnection

 

 

    本例使用Access数据库,所以数据库连接使用OleDbConnection类型。针对不同3数据库类型,.NET提供不同的数据库连接类。

    例如SQL Server数据库需要使用SqlConnectionODBC数据源使用OdbcConnectionOracle数据库需要使用OracleConnection

 

 

数据适配器

    Friend WithEvents ODDAPerson As System.Data.OleDb.OleDbDataAdapter

 

 

    Friend WithEvents ODDAType As System.Data.OleDb.OleDbDataAdapter

 

 

    与数据库连接类似,对于不同的数据库类型,需要使用不同的数据适配器类。

    例如SQL Server数据库需要使用SqlDataAdapterODBC数据源使用OdbcDataAdapterOracle数据库需要使用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之后,将清除所有行的状态标志,也就是说,程序将无法再区分哪些是新添加的,哪些是被修改后的。所以所有利用行状态标志对数据源进行修改的操作都放在了此调用之前。

* 将各种修改存回数据源的顺序为:添加的行--被修改的行--被删除的行。以免在操作时发生逻辑错误。


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有