剖析DataGrid在ASP.Net中的数据处理机制

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:ericwu8756
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:基于ADO.Net以非连接环境方式访问数据库的Asp.Net应用程序中,DataGrid是比较常用的数据处理控件。本文主要对DataGrid如何实现数据库的更新、删除和插入操作进行了论述.
  关键词:ADO.Net;非连接环境;ASP.Net;DataGrid;数据处理
  中图分类号:TP274文献标识码:A文章编号:1009-3044(2007)04-10898-01
  
  1 DataGrid控件的主要结构
  DataGrid是ASP.Net环境中开发以非连接环境方式访问数据库的应用程序常用的服务器控件。DataGrid 结构中所包含的几个对象集合是其实现对数据库数据处理的关键所在。
  1.1 Items集合
  DataGrid中每个绑定的数据行都是一个Item对象,可以使用Items集合获取指定的数据行。
  1.2 Cells集合
  每个Item对象由多个cell子对象构成,可以使用Cells集合获取Item中的每个列,并且可以通过Cell的Controls集合访问单元格中包含的子对象,这在数据编辑时非常有用。
  1.3 Columns集合
  通过Columns集合可以给DataGrid添加选择、编辑、删除等数据处理列,通过这些对象可以触发DataGrid中的特定事件,为处理数据库中的数据提供了接口。
  
  2 DataGrid数据处理机制
  2.1 ADO.Net在非连接环境方式下的数据处理机制
  ADO.Net在非连接环境方式下通常使用数据适配器DataAdapter读取数据库中的数据并缓存至数据集DataSet中,客户端用户通过某些方式处理DataSet中的数据并调用DataAdapter的更新命令将结果提交回数据库。
  因此,在正确配置DataAdapter的查询、删除、修改、添加命令对象后,如果我们找到一种方法能够通过DataGrid对数据集数据进行处理,我们就找到了将数据提交到后台数据库的简便而有效的方法。
  2.2 DataGrid数据处理机制
  通过给DataGrid自定义选择、编辑、更新、取消列,可以触发DataGrid与之相关的各个特定事件.在这些事件中,可以编写代码处理数据集中的相关数据并将其提交到服务器端的后台数据库。
  2.2.1 选择列
  DataGrid中包含命令名为“Select”的列(选择列),该列可触发DataGrid中的行索引更改事件SelectedIndexChanged。
  2.2.2 编辑列
  DataGrid中包含命令名为“Edit”的列(编辑列),该列可触发EditCommand事件.该列通常与另外两个列配合使用:更新列和取消列,分别用于接受和取消当前的编辑结果。这两个列分别触发UpdateCommand和CancelCommand事件。
  在UpdateCommand事件中,要取出DataGrid中当前被编辑行的各个单元格的数据必须先明确当前单元格的索引号与被绑定的数据表格的属性列的索引号的对应关系,该索引号必须减去手动添加的自定义列的数目才与数据表格的属性列的索引号相对应。其次,单元格中的数据存放在一个形如TextBox的Object对象中,该对象可以通过单元格的Controls[0]获取并转换成TextBox对象,即可按文本框的Text属性取出数据。
  2.2.3删除列
  DataGrid中包含命令名为“Delete”的列(删除列),该列可触发DeleteCommand事件。
  
  3 应用实例
  本案采用C#在Visual Studio.Net 2003中编写一个Web应用程序,谈谈使用DataGrid处理数据库数据的具体方法。所使用的DataGrid、SqlDataAdapter、SqlConnection、DataSet对象分别为DataGrid1、SqlDataAdapter1、cn、Ds1;数据表结构为Stu(stuID(Char(10), PrimeryKey, not null), name(varchar(10), not null),sex(char(2)),age(tinyInt)),该表存放于SQL Server 2000的students数据库。
  在DataGrid1中需要添加选择、编辑、更新、取消、删除列,并创建各列对应的事件关联。
  3.1 数据的装入和绑定
  在PageLoad事件中生成完整的SqlDataAdapter对象,并完成初始化工作.关键代码参考如下:
  …
  sqlDataAdapter1=New SqlDataAdapter("select stuID, name, sex, age from stu",cn);
  SqlCommandBuilder scb=New SqlCommandBuilder(sqlDataAdapter1);//生成适配器的插入、删除和更新命令
  sqlDataAdapter1.Fill(ds1);
  if (!IsPostBack){
  DataGrid1.DataBind();
  }
  3.2 数据行的编辑
  对指定行进行编辑时需要启用编辑状态,并且设置取消或提
  交编辑结果的代码.在以下三个事件末尾都要添加DataGrid1.DataBind()代码以保证立即刷新绑定。
  3.2.1 启动数据行编辑模式
  在DataGrid1的EditCommand事件中设置当前编辑的行索引:
  DataGrid1.EditItemIndex=e.Item.ItemIndex;
  3.2.2 放弃更改
  在DataGrid1的CancelCommand事件中退出编辑模式并放弃编辑结果:
  DataGrid1.EditItemIndex=-1;
  3.2.3 确认并提交更新
  在DataGrid1的UpdateCommand事件中将编辑的结果写入数据集并提交到数据库,主要代码参考如下:
  TextBox[] tb=new TextBox[n]; //n为当前行需要更新的字段总数
  int i=DataGrid1.SelectedIndex;
  int rowsCount=DataGrid1.Columns.Count;//确定绑定的数据列的起始位置
  tb[0]=(TextBox)(DataGrid1.Items[i].Cells[rowsCount+1].Controls[0]);//被编辑的name列
  tb[1]=(TextBox)(DataGrid1.Items[i].Cells[rowsCount+2].Controls[0]);
  …
  DataRow dr=ds1.Tables[0].Rows[i];
  dr.BeginEdit();
  dr[1]=tb[0].Text;
  dr[2]=tb[1].Text;…
  dr.EndEdit();
  sqlDataAdapter1.Update(ds1);
  DataGrid1.EditItemIndex=-1;
  3.3 数据行的删除
  在DataGrid1的DeleteCommand事件中编写如下代码:
  ds1.Tables[0].Rows[e.Item.ItemIndex].Delete();
  sqlDataAdapter1.Update(ds1);
  DataGrid1.DataBind();
  3.4 数据行的添加
  DataGrid的数据行是由被绑定的数据源数据决定的,故单独通过DataGrid添加一个行并不现实。解决这个问题有一个折衷的办法:用其他方式先给数据集中的数据表添加一个新行(当然必须给既不能自动生成、又不具有默认值的非空列赋随机初始值),再刷新DataGrid1对数据集的绑定,新增的空行当作一个普通行一并显示,即可通过“编辑”命令实现对该行数据的更新,从而达到新增一行的功能.因方式多种多样,本例参考代码从略。
  
  4 结束语
  DataGrid为非连接环境提供了较为完整的数据处理机制,正确认识了DataGrid控件的主体结构和非连接环境方式下使用SqlDataAdapter更新后台数据的方法,当处理的数据量较少、数据类型较简单时,就能得心应手地使用DataGrid,降低程序编写的复杂度。
  参考文献:
  [1]微软公司.数据库访问技术——ADO.NET程序设计[M].北京:高等教育出版社,2004.
  [2]微软公司.面向.net的Web应用成程序设计[M].北京:高等教育出版社,2004.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
夏天来了,带着数码相机出去郊外拍摄景物,在风景区,大约拍了10张照片,DC就出现了缺电指示,随后自动关闭DC电源。为了能够继续拍摄,笔者随后买了4支东芝碱性电池,换了电池之后,又继续拍了大约15张左右,然而,在准备继续拍摄的时候,DC又一次……什么样的原因,让DC如此故障呢?笔者研究了一段时间,原来发现,并非DC本身问题,而是电池在作怪,想来,DC电池的选择是非常关键的。  1动力之源——合理选配
期刊
在电脑上看电视,已经不是什么新鲜的事了,目前很多品牌PC都具备了电视播放功能,而对于兼容PC而言,我们只要购买一块电视卡或电视盒,同样可以实现在PC上收看电视节目。不过由于目前市场上的电视卡、电视盒种类较多,导致用户难以购买到适合自己的产品,电视卡、电视盒的选购同样需要一些技巧。    电视卡与电视盒选谁?  现在能够接收电视节目的产品,有电视卡和电视盒两种,在大体功能上都没什么差距,到底选择哪种
期刊
虽然日前发布的QQ2007 Beta1并没有如用户所期待的那样采用全新的内核,除去可有可无的新皮肤外,这个版本还是“百尺竿头更进一步”,依然增加了一些非常实用的新功能。这里简单介绍一下:    新功能之一:QQ医生    “盗号”始终是困扰广大QQ用户的一个重大问题,不过现在你可以开始放宽心了,因为QQ2007 Beta1新增加了登录时使用QQ医生进行安全检查的功能。如图1所示,这里除了可以使用软
期刊
目前,网上一切都充满了个性,如头像、签名等等。和朋友们邮件来往,放在博客或论坛中的邮箱地址,单调乏味而又不能吸引别人的注意,咱也得想个办法给邮址改头换面,让自己Email Logo不再是单调的文字。其实,只要登录“个性E-mail DIY!”网站,就能轻松制作出个性E-mail Logo,而且还能加入博客中,彰显个人品位。制作方法如下:  1.登录E-mail Logo制作网站(http://bl
期刊
对于大学生而言,过外语四级、六级是最基本的能力考核,但往往需要付出很多努力,其中包括购买外语书籍和外语听力磁带,这可能要花费我们不少购买成本,其实,如果你有一款MP3或MP4随身听的话,可以借用别人的外语听力磁带,将其转录到电脑里,然后传输到随身听里欣赏,打造一台即能听歌、看电影,又能练习英语听力的学习机。    1前期准备    由于许多学生以前的听力材料都是采用普通的录音磁带,并且目前各书店的
期刊
摘要:我国现行的义务教育阶段学生学籍管理制度,不能适应近年来人口流动增加的实际情况。地区与地区之间缺乏必要的衔接,不同系统间的信息交换也没有统一的标准,造成当前电子学籍系统陷入“信息孤岛”的泥潭。B/S下基于.NET的国家义务教育管理系统,实现了省际信息共享,解决了学生跨省流动的难题。  关键词:信息孤岛;.NET;CLR;进程对;B/S;瘦客户端  中图分类号:TP311.5 文献标识码:A文章
期刊
BBS已经成为互联网上应用最为广泛的服务之一,它提供了众多的“公共”空间供用户进行讨论和交流,许多建立在BBS上的虚拟社区也已成为网民们流连忘返的家园。通常,我们都是通过网页浏览器访问网站后登录BBS的,但如果经常到多个BBS上“灌水”的话,要记住这些BBS的地址和登录不同的网站就显得有点烦琐。Cterm可以让我们更加轻松快捷地逛遍自己喜欢的BBS。  Cterm3.26是Clever Termi
期刊
使用数码相机摄影,不但可以即拍即得,随时预览和删除,还可以方便地导入电脑中,进行各种修饰、美化和艺术处理,让每一个人都可以体验“数字暗房”技术,这就是数码摄影的魅力所在!谈到数码相片后期处理软件,绝大部分人都会想到Photoshop。是的,毫无疑问,Photoshop是平面处理软件中的龙头老大,但我们大多数人不能熟练地应用Photoshop去做后期处理,因为专业要求高,难度大,操作比较复杂。形象地
期刊
摘要:SOX法案的实施对IT部门的规范化管理提出了直接的要求。本文阐述了SOX法案对IT部门的审计要求,对IT部门应如何应对这一挑战,整合IT资源,规范IT流程,提高核心竞争力做了一些探讨性分析。为国内企业IT的运营维护提供了一种思路。  关键词:审计;SOX;整合;流程管理  中图分类号:TP3文献标识码:A 文章编号:1009-3044(2007)04-10924-02    1 引言  由于
期刊
《战火》第一章“红色警戒”融入了RTS游戏的经典元素,强调策略、发展、配合等战斗中必不可少的关键环节,同时充分发挥了网游的互动性。《战火:红色警戒》中的任务,不仅从细微之处让人切身感受到自己正通过磨练不断地成长,也让每个人感受着这个处在遥远星系中的世界是如此真实。    初级主线任务    一、新人报道  1.找到新兵训练官“卡尔”  2.然后选择新手奖励    二、新手挑战  1.找新兵训练官“
期刊