GridView控件批量更新方法的改进研究与实现
2013-11-26欧阳艳阶
欧阳艳阶,张 明
(十堰职业技术学院 信息与智能工程系,湖北 十堰 442000)
0 引言
ASP.Net是微软公司.Net战略的重要组成部分,是一种建立在通用程序语言上的程序构架,能被Web服务器用来建立强大的服务器端Web应用程序。ASP.Net大量使用Com技术,将 Web浏览器和Web服务器之间的数据交换完全包装起来。作为微软公司战略产品,ASP.Net还提供一个统一的Web开发模型,其中包括WEB开发人员开发大型Web应用程序所需要的各种技术和服务。ASP.Net还提供一种新的编程结构,可通过编译生成稳定性和伸缩性更好的WEB应用程序,并在安全性上有完整的保护机制。
ASP.Net中的网格控件GridView以类似Excel电子表格的形式提供给用户一个个性化的表格视图,表格视图中每一行代表来自数据源记录集的一条记录。这样可以批量显示数据,也为更新数据创造了条件。同时GridView控件提供了丰富的、友好的智能标记界面,常用的更新、排序、分页、删除等操作几乎可以零代码实现。GridView控件还具有分页等页面管理属性,可以自定义页面导航和计数,使分页管理和控制更加方便、合理。GridView控件的面向对象的事件管理功能设计成会触发两个事件,一个在操作前发生,一个在操作后发生。操作前触发的事件多为“ing”事件,操作后触发的事件多为 “ed”事件,比如Sorting事件和Sorted事件,分别标示排序前发生和排序后发生的事件;RowDeleting和RowDeleted事件分别标示正在删除和删除后发生的事件。由于GridView控件出色的数据管理功能,因此深受开发人员的喜爱,在WEB开发过程中被大量使用[1]。
1 问题的提出
在实际 WEB项目开发过程中,经常会碰到插入、修改、删除等批量数据处理的情况。但Grid-View一般一次只能编辑一行。为了优化GridView控件的数据更新功能,减少往返提交数据的代价,可以一次性批量编辑GridView中的所有行,以减少网络传输次数,达到提高系统性能的目的。
GridView控件采用表格形式显示从数据库中获取的数据集合。但GridView控件本身只能对其所绑定的数据进行单行的更新,当需要对GridView控件所绑定的数据进行大批量更新时,GridView控件自身的单行更新效率就显得比较低下了。而目前已有的GridView控件批量更新方法虽然能实现批量更新,但存在许多缺陷。本文探讨了GridView控件的单行更新、通用批量更新方法,并对Grid-View控件通用批量更新的方法进行了改进,并设计了算法。
2 解决问题的设计思路
2.1 通用批量更新方法[2]
虽然GridView控件一般只能单行更新数据,但通过变通,使用其他控件及模板技术仍然能实现批量更新数据功能,只是存在部分功能上的缺陷而已。通用批量更新方法如下:首先用TextBox控件替换模板列中的Label控件,并将TextBox控件的Text属性设置为绑定数据表中欲更新的表字段,如:Bind("Teacher_Name")。然后通过循环遍历GridView控件所加载的所有行,获取每一行Text-Box控件的Text属性所设置的数据内容。通过Update语句更新数据,最后重新使用Bind()方法绑定数据,达到批量更新GridView控件数据的目的。
2.2 通用批量更新方法存在的缺陷
GridView控件的通用批量更新方法虽然能一次性批量更新所有数据记录集中的数据,但该方法却存在以下不足。
(1)使用该方法后无法重新使用GridView控件本身具备的单行更新编辑功能,每次都必须进行所有记录集数据的批量更新。
(2)模板列ItemTemplate中的内容仅有Text-Box控件,需要更新记录集数据的绑定后状态和初始绑定状态均为TextBox控件的Text属性,无法实现记录集数据的静态绑定,同时也不利于观察、区分数据集数据批量更新前后的不同变化。
2.3 GridView控件通用批量更新方法的改进
为了解决GridView控件一次性批量更新数据时存在的上述问题,本文对GridView控件的通用批量更新方法进行了部分改进,具体方法如下:
(1)在ItemTemplate模板列中添加文本框控件TextBox,将TextBox控件的Text属性与 Grid-View控件原来使用的Lable控件绑定到相同的数据字段,并将其默认状态隐藏。同时保持EditItem-Template模板列的默认绑定不变。
(2)增加一个“批量保存”按钮btn_AllSave。在触发btn_AllSaved的Click事件时,首先判断Grid-View控件的记录集数据是否处于单行编辑状态。如果是单行编辑,则先进行单行的更新,否则将ItemTemplate模板列中的TextBox控件的Visible属性设置为True,Label控件的Visible属性设置为False,并将GridView控件本身的“编辑”列隐藏。
3 算法设计
本文以一个高校的人事管理系统为载体,阐述了对GridView控件通用批量更新方法的改进措施及算法设计思想。
(1)设置并建立数据库连接及相关表的查询语句设计;
(2)在GridView控件的ItemTemplate模板列中添加TextBox控件,并将TextBox控件绑定到相应表字段。使GridView控件能正确显示数据库中的记录集;
(3)设置5个类的全局公用标志变量,分别对应高校的人事管理系统中的教师姓名、性别、学历、电话、家庭住址五个TextBox控件个字段,用于监视这五个字段是否发生了变化。每次循环开始前,五个标志均置空。每个标志变量均在TextBox控件的TextChanged事件中进行重新设置。以确保循环时能监测到该行是否发生了变化;
(4)以 GridView1.Rows.Count进行计数循环,若该行五个标志中任何一个发生变化,即表明该行需要更新。若五个标志均为置空状态,即表明该行不需参与更新;
(5)使用更新语句进行数据更新。
4 代码设计及分析
4.1 GridView控件ItemTemplate模板列的代码设计[3]
其中<%#Bind("Teachername")%>的功能是使用Bind()方法将TextBox控件的Text属性绑定为数据库中表的“Teachername”字段
4.2 设计数据库连接字符串
在在web.config WEB配置文件中添加数据库连接字符串。
4.3 设计数据库绑定方法bind()
4.4 生成修改字符串
4.5 执行更新语句,并输出提示信息
5 结束语
GridView控件的批量数据更新功能是一种高效的编程策略,是B/S结构软件开发中非常实用的功能。将GridView控件的批量数据更新功能巧妙地运用到B/S结构软件中,可以提高 WEB项目开发与运行效率,是B/S结构软件开发中非常有价值的算法。
基于实际开发的软件工程项目,本文阐述了Visual Studio.Net平台下GridView控件的批量数据更新的改进算法,提出了改进措施,设计了算法,并给出了部分代码。本文在Visual Studio 2008,SQL Server 2005环境下调试通过。
[1]杨学全.Visual C#.NET Web应用程序设计[M].北京:电子工业出版社,2012:7-9.
[2]刘 伟.Visual C#程序设计与项目实践[M].北京:清华大学出版社,2011:108-112.
[3]郑阿奇.Visual C#网络编程[M].北京:电子工业出版社,2011:178-181.