您的位置:首页 > 其它

机房重构——DataGridView绑定问题

2016-01-15 16:06 267 查看
机房进行了20天左右,越来越得心应手,比第一次敲的时候自信了很多,而且也感觉自己越来越专业了,原来看师哥师姐的博客说敲下来七层登录这条线,之后路就简单多了,现在想想确实如此,其实软件工程师这条路和别的路一样,都是需要脚踏实地去走的,米老师常说,学习是个过程,我们遇到的困难其实也不能称之为困难,因为他们根本没有难到那个程度,他们只能称之为问题,而且我们要做的就是遇到问题,解决问题,简单粗暴但一向好使。热血鸡汤不再撒了,直接总结了,今天想要总结一下我很喜欢的一个控件:DataGridView

对比DataGrid控件

查了很多资料,其实DataGridView就是DataView的升级版本,相比后者,前者增添了很多新的功能,封装性也更好了,下边关于两者的对比是引用自我师父的博客:

下表描述了DataGridView提供而DataGrid未提供的几个主要功能。

DataGridView功能

描述
多种列类型
与DataGrid相比,DataGridView 提供了许多其他的内置列类型。这些列类型能够满足大部分常见须要,而且比DataGrid中的列类型易于扩展或替换。
多种数据显示方式
DataGrid仅限于显示外部数据源的数据。而DataGridView则能够显示非绑定的数据,绑定的数据源,或者同一时候显示绑定和非绑定的数据。你也能够在DataGridView中实现virtual mode,实现自己定义的数据管理。
用于自己定义数据显示的多种方式
DataGridView提供了许多属性和事件,用于数据的格式化和显示。比方,你能够依据单元格、行和列的内容改变其外观,或者使用一种类型的数据替代还有一种类型的数据。
用于更改单元格、行、列、表头外观和行为的多个选项
DataGridView使你能够以多种方式操作单个网格组件。比方,你能够冻结行和列,避免它们因滚动而不可见;隐藏行、列、表头;改变行、列、表头尺寸的调整方式;为单个的单元格、行和列提供工具提示(ToolTip)和快捷菜单。
唯一的一个DataGrid提供而DataGridView未提供的特性是两个相关表中数据的分层次显示(比方常见的主从表显示)。你必须使用两个DataGridView来显示具有主从关系的两个表的数据。

DataGridView的亮点
DataGridView控件特性
描述
多种列类型
DataGridView提供有TextBox、CheckBox、Image、Button、ComboBox和Link类型的列及对应的单元格类型。
多种数据显示方式
DataGrid仅限于显示外部数据源的数据。而DataGridView则能够显示非绑定的数据,绑定的数据源,或者同一时候显示绑定和非绑定的数据。你也能够在DataGridView中实现virtual mode,实现自己定义的数据管理。
自己定义数据的显示和操作的多种方式
DataGridView提供了许多属性和事件,用于数据的格式化和显示。
此外,DataGridView提供了操作数据的多种方式,比方,你能够:

对数据排序,并显示对应的排序符号(带方向的箭头表示升降序)
对行、列和单元格的多种选择模式;多项选择和单项选择
以多种格式将数据拷贝到剪贴板,包含text,CSV (以逗号隔开的值) 和 HTML
改变用户编辑单元格内容的方式

用于更改单元格、行、列、表头外观和行为的多个选项
DataGridView使你能够以多种方式操作单个网格组件。比方,你能够:

冻结行和列,避免它们因滚动而不可见;
隐藏行、列、表头;
改变行、列、表头尺寸的调整方式;
改变用户对行、列、单元格的选择模式;
为单个的单元格、行和列提供工具提示(ToolTip)和快捷菜单。
自己定义单元格、行和列的边框样式。

提供丰富的可扩展性的支持
DataGridView提供易于对网格进行扩展和自己定义的基础结构,比方:

处理自己定义的绘制事件能够为单元格、列和行提供自己定义的观感;
继承一个内置的单元格类型以为其提供许多其他的行为;
实现自己定义的接口以提供新的编辑体验。

自己使用这个控件的感受:

优点

1.直接绑定数据源,减少了代码的书写量,而且几乎都是自动生成的代码,很方便。

2.更加美观大方,对于数据的处理更加全面,可以在表格内根据内容进行排序,觉得瞬间提高了逼格和档次

3.操作起来更加便利,不管是数据库中的表还是视图亦或是泛型数组都可以用datagridview来显示

缺点:

1.违背三层架构原则

表和数据源绑定固然轻松愉悦心情好,但是别忘记这样做也有不美丽的地方,那就是违反了三层的基本原则,因为三层架构的原则就是U层接触用户,B层逻辑判断,D层和数据库打交道,如果控件绑定数据源了,那么就相当于U层直接调用了数据库,这样做的结果就是耦合程度变高了,如果要修改了某张表的某个字段名,我们还得打开U层去改响应的字段名

上边讲了这么多,没有接触过的同学一定云里雾里了吧,下边就看个实例来加深理解,举个简单的例子——添加和删除用户

实际应用

1.进行DataGridView和数据源的绑定













2.表格属性的设置

点击第一步的小三角,选择“编辑列”



3.添加查询

依然点击小三角,然后选择“添加查询”



4.编写代码

当你设置好上边的所有项目之后,会发现,控件君自动生成了几行代码,点个赞~只需要按照你的想法将这几行代码挪挪地儿,改改名,大功就告成了!

代码如下,写的在详细点就一点思考空间也没有啦~~

Private Sub frmModifyUser_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO:  这行代码将数据加载到表“UserInfoDS.User_Info”中。您可以根据需要移动或删除它。
        'Me.User_InfoTableAdapter.Fill(Me.UserInfoDS.User_Info)

        InquireUserToolStrip.Hide()

        cboUserLevel.Items.Add("一般用户")
        cboUserLevel.Items.Add("操作员")
        cboUserLevel.Items.Add("管理员")

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboUserLevel.SelectedIndexChanged

        ToolComboLevel.Text = cboUserLevel.SelectedItem.ToString() '将自己添加的Combo中的内容赋给ToolStripTextBox控件

        Try
            Me.User_InfoTableAdapter.Fill(Me.UserInfoDS.User_Info)
            Me.User_InfoTableAdapter.inquireUser(Me.UserInfoDS.User_Info, ToolComboLevel.Text)
            gridUser.AllowUserToAddRows = False '删除最后一行空行

        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try
    End Sub


总结:

其实每一个控件都有自己的性格和他们特殊的用处,他们就像用来打仗的武器,我们要懂得他们的好,才能得心应手的使用,下一章总结一下泛型和这个控件的绑定问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: