【51CTO快译】在创建到外部数据的连接时,.NET配置向导是一个很好的开始,它不仅可以为你创建点击式连接,还可以快速简单地产生一个控件,用于用户检索、显示和操作数据,但向导很少产生用户需要的功能的控件,你可能想对向导产生的控件进行调整——增加需要的功能。
本文的目标读者是.NET新手。首先讲述如何创建一个新连接,然后讲述如何自定义结果控件,使用Visual Basic Express(VB Express)配置向导,本文将描述如何填充DataGridView控件,然后按照以下步骤进行提高:
1、行的显示颜色交替,构成一个绿色条效果;
2、禁用掉DataGridView内置的单列排序功能;
3、执行这个窗体时显示编辑行。
开始
VB Express提供了许多方法检索和操作外部数据,例如,只需要运行VB Express的配置向导就可以建立一个到MS Access 示例数据库Northwind.mdb中Customers的连接:
1、启动VB Express,然后在标准工具栏上点击新建项目按钮,在弹出的对话框中选择Windows Form Application;
2、在名称控件处输入一个有意义的名字,点击确定按钮;
3、点击解决方案资源管理器右下角的数据源标签,如果没有看到这个标签,从“数据”菜单中选择显示数据源即可;
4、点击新建数据源按钮,启动新建数据源配置向导;
5、点击下一步,数据库选项保持默认设置;
6、在下一个面板中点击新建连接;
7、在弹出的新建连接对话框中,点击修改,从弹出的修改数据源对话框中选择Access数据库文件,然后点击确定按钮;
8、在新建连接对话框中点击浏览,找到Northwind.mdb的位置(在Office目录的Samples文件夹下),然后点击确定按钮;
9、点击测试连接,然后点击确定按钮清除确认消息;
10、如果连接工作正常,点击确定返回向导窗口,然后点击下一步继续;
11、VB Express会询问你是否要拷贝数据库,如果你选择“是”,将会把整个数据库拷贝到你的项目下,在这个例子中,我们选择“否”;
12、接下来的面板中让你将配置信息保存到配置文件中,默认是要保存,点击下一步即可(向导会检索数据库对象,并在源文件中显示它们,在这里你可以识别一下将要在.Net项目中检索和操作的数据);
13、点击“+”号展开表节点,选中Customers表,保留默认的NorthwindDataSet,VB Express的数据集;
14、点击完成,VB Express将会检索指定的数据。
创建好连接后,还需要一个窗体来显示数据,请跟着我做:
1、点击数据源标签;
2、点击Form1标签,然后从数据源标签拖动Customers数据集到窗体设计器中的Form1上,VB Express将会产生一个DataGridView控件并自动命名,图1显示了结果窗体和窗体设计器中的网格。
窗体和窗体设计器中的网格:配置向导创建的可以显示数据的控件
3、从文件菜单中选择保存所有,然后点击保存按钮。
至此,你已经有一个来自Northwind数据库的数据集,和一个显示该数据的DataGridView控件及控件所在的窗体,所有需要做的就是运行一下向导。
#p#
行显示颜色交替
***个增强是,使用向导创建的控件可以通过修改行的颜色提高易读性,使用DataGridView时,可以很容易修改属性:
1、在窗体设计器中,选择DataGridView控件(不要双击,将会打开窗体的代码页);
2、在属性窗口中,打开AlternatingRowsDefaultCellStyle属性;
3、点击BackColor属性的下拉箭头,显示CellStyleBuilder对话框;
4、选择一个与当前颜色不同的颜色(默认是白色),在这个例子中,选择蓝色,如图2所示,然后点击确定按钮。
CellStyleBuilder对话框:选择一个交替的行颜色
5、按F5运行程序,图3显示了使用交替颜色填充的网格控件。
填充好的网格控件:行的颜色在蓝色和白色间交替使用
记住,只设置交替的一行的属性颜色就可以了,不是要设置所有行的属性,如果还想更多一点变化,相应设置BackColor和ForeColor即可。
控制排序顺序
最初,你产生的控件是按表的顺序填充的,因为还没有指定排序顺序,然而,DataGridView是天生就支持排序的,只需要点击标题栏,控件就会以该栏升序排序记录,再点击一次就按降序排序,对于大多数控件而言,在填充控件时你都可以排序数据:
1、在窗体设计器中,选择CustomersBindingSource组件,将会在相应的属性窗口中更新其项目;
2、在窗口的底部,找到sort属性,输入city,如图4所示。
找到Sort,输入City:指定一个排序列
3、按F5运行程序,正如你在图5中所看到的,控件按照City值以升序排序记录。如果想降序排列的话,只需要加上DESC关键词就可以了,即输入City DESC。
控件排序记录:窗体通过City值排序记录
你可能会禁止这个原生态的排序功能,但你需要为每个禁止排序的列编写一小段代码,例如,为了禁止Contact Title列的排序功能,请跟着我做:
1、在设计视图窗体中,从视图菜单选择代码,或按F7;
2、开始输入代码,很快你就会发现智能感应不会显示控件包含的列名,相反,它是按照位置显示列名的,这不是引用列的***办法;
3、为了修改DataGridView控件的列的默认名称,必须修改控件本身的Columns集合,在设计视图中,双击网格(不是窗体),你可能需要稍微放大一下窗体,以便准确选中一个网格,当属性标题显示CustomersDataGridView时,你就可以确定选中的是网格而不是窗体了;
4、定位Columns集合,然后点击Builder按钮,启动编辑列对话框,如图6所示。
点击Builder按钮:查看网格的Columns集合
5、在选择列控件中,选择ContactTitle;
6、在设计区域(右下角),这个控件的Name属性值是DataGridViewTextBoxColumn4,使用一个更有意义的名字替代它,这里我们输入DataGridViewTextBoxContactTitle,如图7所示。对那些不想设置的隐形列,将其Visible属性设置为false即可。
为Name属性输入一个有意义的名称
7、点击确定返回代码窗口(Form1.vb);
8、输入下面的代码:
- Me.DataGridViewTextBoxContactTitle.SortMode = DataGridViewColumnSortMode.NotSortable
这一次智能感应按名称而不是位置列出了列,如图8所示。
智能感应按名称列出了列:使用列名代替位置号
9、保存所做的修改;
10、按F5执行项目,在结果窗体中,点击ContactTitle的标题栏,这一次窗体不会排序记录了,这是因为输入的代码禁用了排序功能。
#p#
显示编辑行
目前,示例窗体显示了91条记录,此时如果用户想要插入一行记录,必须滚动窗体到编辑行,你可以通过编程让窗体自动显示编辑行,将下面的代码添加到窗体的Load事件中,如图9所示。
- Me.CustomersDataGridView.FirstDisplayedScrollingRowIndex = CustomersDataGridView.Rows.Count - 1
在窗体的Load事件中添加代码:强制窗体在载入时显示编辑行
按F5运行这个窗体,正如你在图10中所看到的,这个窗体显示了一些记录和编辑行。
显示记录和编辑行的窗体:现在启动窗体,可以看到显示了编辑行
这个语句从行数量减去一个1,这样可以防止异常发生,因为编辑行没有真正的索引,直到你点击了它,即使它影响了行的数量。这个方法仅仅是确保***一行是可见的,所有的记录仍然是可用的,现在窗体显示的记录条数与其容量紧密相关,代码不需要做任何修改。
通过禁用编辑行,这样就将窗体改为浏览窗体了,不能再插入新的行了,要禁用编辑行,只需要在窗体的Load事件中添加一句:
- DataGridView1.AllowUserToAddRows = False
将AllowUserToAddRows属性设置True就启用编辑行。
自定义控件使其更易用和灵活
自定义示例窗体并不需要花多少时间:
1、只需要简单的修改就可以实现交替颜色行;
2、只需要一行代码就可以禁用掉内置的排序功能;
3、只需要一行代码就可以显示编辑行。
如果你是从Access或SQL Server转过来的,当你见识了可以创建和实现一个既可以浏览数据又可以编辑数据的窗体时,你一定会感到满意。
原文:The .NET Newbie's Guide to Customizing the DataGridView Control
作者:Charlotte Foust, Susan Sales Harkins
【编辑推荐】