热门搜索 :
考研考公
您的当前位置:首页正文

利用拓展GridView控件增强系统功能

来源:伴沃教育
维普资讯 http://www.cqvip.com

2008年第7期 福建 电脑 179 利用拓展GridView控件增强系统功能 毛向荣.叶柏龙 (湖南大学软件学院湖南长沙410082) f摘要】:ASP.NET2.0自带的GridView控件在实际应用中,需作一些改进,使它能符合某些程序开发的要求。通过对 GridView控件内置事件模型的修改,及在GridVieW控件中添加一些特性、属性与函数,可以把GridView控件进行有效拓展, 增强系统功能。 【关键词】:GridView控件正文: 自定义控件事件模型 由于DBMS拥有非常高效的排序算法。可考虑利用它执行 排序操作。把ObjeetDataSouree控件与GridView控件一起使用。 能找到一种高效的、可扩展的解决方法。在支持数据访问和业务 对象中重载选择方法事件.即在ObjeetDataSouree控件中修改 selectmode属性的GetAll方法。将GetAll方法中的sql语句改 为: sql+=”ORDER BY SortExpression” GridView控件在用户的控制下交替出现 例如信息的浏览与新 增功能。前者包含的GridVieW控件用于查询、编辑与删除。后者 许多系统要求GridView控件显示信息时.把某些行数据突 出显示.例如企业的ERP系统要把周转速度快的产品信息突出 用于部分新增信息。显然。GridView控件是动态显示的。这样就 显示,WMS系统中要把库存不足的物资异色显示.医院的药物 涉及到数据源的动态绑定问题(51。 管理系统中要把即将到期的药品突出显示等等。此类问题对 3.2解决方案 GridVieW控件的行显示功能提出了新的要求 在页面上设置两个浏览与新增按钮(单选按钮组更疡 1.2解决方案 实现此功能),将两个GridView控件置入相邻的行内。在按钮事 GridVieW控件提供了功能强大的事件模型[31.大部分事件都 件中编写交替显示的函数.先利用HtmlTableRoW控件找到对应 是可以修改的。GridVieW控件用于显示行信息有两个重要的事 的GridView,按照设计编程绑定不同数据源.并将HtmlTableRow 件:R0wCreate事件和RowDataB0und事件f3l。分析这两个函数的 控件的visible属性设为true.而另一个Html leRoW控件的 功能及执行方法能帮助解决自定义行显示问题 R0wCreate函数 visible属性设为false。当用户分别点击两个按钮时,将切换至不 主要用于创建标题行、数据行、页码行等 GridVieW控件没有在 同的GfidVieW控件,从而实现了功能交替。 执行RowCreate事件前把行数据绑定.也就不能对行信息突出 要注意的是,由于没有采用SqlDataSouree作为数据源. 显示。但R0wDataBound会在RowCreate事件后立即引发.该事 GridView控件的分页与排序事件需作适当修改141。Pagelndex. 件直接控制着各行信息的文本格式,只需对它作些修改,就能实 Chang/ng文件必须重新加载数据源,定义页索引,及绑定数据。 现自定义行的显示。在RowDataBound函数中加入符合用户条件 4.创建GridView控件自带的CheekBox列 的代码。例如产品周转速度大于某一固定值时.该行颜色为红 4.1提出问题 色,区别于其他行。代码改动要用到如下语句: 许多模块在使用GridView控件的时候.需要用到CheekBox I 列,比如批量审核、批量删除。GridView控件带有自动创建数据 列、按钮列、编辑列、删除列的功能,但是不具备直接产生 if(”字段值”>=某一固定值) CheckBox列的功能.如果每次都要在GfidVieW控件的Html代 e.row.tex1.Font:… 码中编程添加CheekBox列.添加检查复选框和执行相关操作的 e.row.text.ColOF--'red e.row.BaekColor_..・ 代码.那么对开发员来说是一件麻烦事。如果能让GridView控 l 件自带CheekBox列.设计者就可以利用它的特性和属性来选择 同样的,运用此方法还可以实现行的其它显示功能。 是否启用复选框列.怎样显示复选框列.不仅可以省掉重复的设 2.与ObjeetDataSouree控件结合进行高效的数据排序 计过程,加快开发进度.也能从一定程度上减轻开发者的负担。 2.1提出问题 4.2解决方案 GridView控件为用户提供了排序界面.具体的数据排序任务 由于CheckBox列不能在后台添加.所以排除通过添加 依赖于底层的数据源执行 但SqlDataSource并不依赖于DBMS Coluruns来实现.幸好GridView是基于事件的控件,可以采用在 执行排序.而是利用DataSet中的sort方法来实现排序的闱。即在 GridVieW控件创建行的时候动态创建表单元格的方式.在标题 服务器端把数据集读入到DataSet中.然后调用DataS.et中的 行上添加一个全选的CheekBox.各数据行上添加一个选择框. sort方法把数据集中的所有数据按表达式排序.这一方法对于 点击全选的CheckBox.就可通过向页面注册的脚本来实现全 数据量不大的情况是可行的。如果数据量很大,那么不仅排序速 选。 度缓慢.而且消耗大量内存(51。因此,如何利用GridView控件对 为了增加灵活性.需要往GridView控件中添加几个特性和 作为一种功能强大、应用广泛的开发技术,ASP.Nl 为众多 开发员提供了有力的帮助.受到开发员的喜爱。在很多情况下, ASP.NET提供的控件不能直接满足程序开发的要求.如果对控 件进行扩展.创建自定义控件,就可以在许多模块开发中使用同 个自定义控件『l】,既减少重复代码,又保证了风格统一,便于升 级与维护。 各类系统的开发中.信息的显示与编辑已成为不可缺少的 内容.人们通常借助DataGrid控件来实现这一功能,由于Data. Grid控件存在诸多缺陷.目前已由GridView控件代替。ASP. NET 2.0自带的GridView是DataGrid控件的升级版本.功能得 到很大提高121,实际应用中。如果对它再进行一些功能拓展,那么 对增强系统功能是非常有益的 1.拓展GridView控件实现自定义行的显示功能 1.1提出问题 一其中SortExpressi0n是列的排序表达式。 利用该方法与数据库交流。使数据在装入DataSet之前.在 DBMS中就已排好了序。此方法对大数据量的排序是可行的.大 幅提高了排序速度.降低了内存使用。 3.动态提供GridView控件数据源 3.1提出问题 有些系统的部分页面含有两个GridView控件.并且两个 大规模数据排序是一个值得思考的问题。 2.2解决方案 属性,例如添加是否显示复选框列、复选列的位置等特性。一般 情况下,复选列放在所有列的最左边或最右边。(下转第193页) 维普资讯 http://www.cqvip.com

2008年第7期 福建 电脑 193 也可多种参数传递和返 时letum后面表达式返回数值的的类型要与函数定义时的返回 适当、高效的参数传递方式和返回方式,这里通过两个 类型要一致否则可能会出错。如把double fun5O改为int fun50 回方式结合使用。参数和返回值结合的方式很多,则.虽然a和x都是double型数据,但输出结果为int型数据。程 例子说明 如返回值为一个.通过值返回实现: 序结果为a=5。 . . ! 例1:求三个整数的最大值。 固 F-q [] ● ● ● ● x 1 1 1 a 功能:返回最大值,返回值是一个整数,函数值返回实现 处理的数据:三个整数.功能实现后不改变处理的数据。可 用值传递方式.形参为三个整数大体定义格式为:hat max(int x, int y,hat x){int max;…一return max;} 主程序设定三个实参,若实参是a,b,e。调用为max(a,b,c); 函数返回一个指针时。不会产生副本.返回效率较高。但必 如例2返回值为多个。通过参数地址传递或引用传递实现: 须确保指针指向的的存储空间调用函数后仍然是生存期中或为 求一个整型数组中的最大值和最小值。 NULL,可以是全局变量、静态变量等,但不要从函数中返回自动 功能:返回最大值、最小值,返回为两个。可用引用或者指针 4.2.2、返回指针 图5函数返回值返回过程 局部变量的地址。返回引用与返回指针相似.但引用不能为 实现: NUI上。 处理的数据:一个数组。功能实现后不改变处理的数据.并 要明确数组的元素个数,可以知道,可以用地址传递中的数组作 值传递传递元素个数。 void main0lint a,b,}c;cin>>a>>b;e=max(&a,&b);cout<<*c<<endl;} 为参数、分析:max函数功能是找出两个数中的最大值。并返回其 函数大体定义格式为:void max(int x几,int n,int&max,int 地址。max函数使用指针变量作为形参,main0调用max函数后, &Jllin)f..、一} 返回了a。b两个实参中最大数的地址。 主程序若定义实参数组int a【1O1,返回的最大值max、最小 注意点:若是把max函数改为:int*max(int x,int y)fetlu133 值min。调用为max(a,10,max,min); 6 结束语 x:'y?&x:&y;J 程序是错的.因为函数返回的是自动局部变量x和v中最 要熟练编写C++语言程序,对于函数调用时的参数结合、变 大的那个的地址,返回给变量e后.局部变量x和v生存期结束 化和函数的返回值要有明确的了解,才能提高编写效率。编程时 了,所占空间被释放,输出e指向的空间内容是些不确值。若是 可根据实际的数据类型和编程目的,选择高效、简洁的参数传递 这两个空间又已经被重新分配使用,则那是很危险的。 方式和返回值 如返回引用:int&max0 f static int a=5;leturn b;}∥若是去 掉static则返回时出错 参考文献: 5、编程技巧 1.陈勇.c++中引用的探讨[1].福建电脑.2005 返回指针如程序:int*max(hat}x,int {return}x> y?x:y;} 编程时将程序划分成子模块.每一个模块用来实现一个特 2.谭浩强.C程序设计(第二版)[M】.北京:清华大学出版社.2003. 定的功能,由函数实现功能,主程序调用函数实现其功能.这样 3.刘振安,尹雷.面向对象程序设计攻关辅导IM1.中国科学技术大学出版 可以提高代码重用率。函数实现可根据其功能实际的情况选择 (上接第179页) 添加特性代码如下: 社.2000. 4.陈维兴,林小茶.c++面向对象程序设计『M1.中国铁道出版社,2004. 使用的时候.只需要设置扩展GfidVieW的ShowCheck=flue [ 或false,设置CheckColumnAlign为left或fight.就可设置是否添 Description(”显示复选列” 加复选列.定位在左边还是在右边。 Category(”扩展“ 小结: DefauhValue(false) 1.GfidVieW控件拥有很强的功能,但在很多情况下,Grid. J View控件不能直接满足程序开发的要求.适当修改GridView控 【 Description(”复选列位置” 件提供的事件模型.例如对RowCleate事件、R0wDataBound事件 ategory(C”扩展” 和OnSorting事件的修改,就可以创建自定义控件.减少重复编 DefauhValue(CheekColumnAlign.Left) 程,增强系统功能。 J 2.GfidView控件与objectDataSource控件一起使用.修改 属性函数获取是否显示复选列的值及复选列的left或fight ObjectDataSource控件中的选择方法.能利用DBMS对大数据量 值。  然后在GfidView的RowCreate事件中.添加代码。用于创建 的数据进行高效率的排序。3.许多页面含有两个GfidVieW控件.在根据设计要求进行 CheckBox列,这是创建自带的CheckBox列的核心。代码从属性 elndexChanging函数中,重新 中得到是否显示复选列的值,若要求显示,则区分标题行和数据 动态绑定数据源外,还需要在PagidView控 行.用TableCell ceII控件及row。Cells。AddAt方法创建CheckBox 加载数据源,定义页索引,并绑定数据,才会不影响Gr件的内置排序与分页事件。 列 .为了在选中复选框的时候执行删除或审核程序.需编写记 录复选列ID值的函数.并在在扩展的GridView的0nRow. DataBound事件中,通过下列函数来获取是否已经选中此行。 CheckBox kod=e.Row.FindC,onu'ol(gridView.CheckBoxlD)as CheckBox; ifrkod!=nul1) l  ̄(kod.Checked) l ||… 参考文献: 1.(Asp.NET 2.0服务器控件与组件开发高级墙程)(芙)Dr.Shahram Khosravi著,郝刚、田亮君、陈文译;人民邮电出版社:2007—5—1 2.(AsP.ET N2.0经典教程--C#篇)(荚)哈特著,孟宪瑞、易磊译;人民 邮电出版社:2007-2-1 3.(Asp.NET 2.0编程珠玑一一来自MVP的权威开发指南)(芙)Y破,D。等 著,杨浩等译;清华大学出版社;2006—12—30 4.<精通ASP.NET 2.0电子商务网站开发)龚赤兵著;人民邮电出版社, 2o08 1 J J 若点击标题行的全选CheckBox.则下面的所有复选框都将 被选中.那么得编写全选的脚本。 5。<征服ASP.ET 2.N0 Aj 一一Web开发技术详解)陈冠军著;人民邮电 出版社:2007-6-1 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top