admin 管理员组

文章数量: 1086019


2024年3月12日发(作者:ordain)

基于JQuery对开源插件jgGrid的功能应用 

蝴匕渝涛 

摘 要:详细介绍了在jqGrid的运行环境及以ASP.NET作为服务器端实现数据加载、分页、查 

找、添加、编辑、删除、浏览等功能的编程实现。 . 

关键词:jqGrid;ASP.NET;JQuery插件 

1 引言 

iqGrid是一个开源的,用于客户端显示和操作表格数据的 

JQuery插件。它通过Ajax回调动态加载数据,并能轻松实现 

数据的动态显示、分页、查找、编辑等多项功能。支持数据类 

型丰富,并且可方便实现自定义界面主题风格。 

作为一个客户端的数据操作解决方案,它可以集成到任何 

服务器端技术,包括PHP、JSP、ASP、ASP.NET、Perl等。由 

于jqGrid是基于JQuery的插件,而JQuery已成为微软最新发 

布的ASP.NET MVC Framework的一部分,因此.在ASP.NET 

MVC项目中使用jqGrid显示和操作表格数据是一个不错的选 

择。将以ASP.NET为服务器端,说明jqGrid的数据加载、分 

页、查找、编辑等功能的使用。 

2 iqGrid的使用 

2.1 运行环境 

目前,jqGrid最新发布的版本为3.6(http://www.trirand. 

eom/blog/?page

id=6),作为一个开源的JQuery插件,jqGrid 

3.6的运行还需要jQuery 1.3.2(http://docs.jquery.corn/ 

Downloading

_

JQuery)和jQuery uI 1.7.2(http://www.jqueryui. 

com/download)的支持。相关文件可分别到其官方网站下载。 

在Microsofl Visual Studio 2008中新建一个“ASP.NET Web 

应用程序”项目,并在该项目下建立一个“jqgrid”目录,将 

以上下载的支持文件放置于该目录下。如图1所示.其中 

jqGrid的主题样式jquery—ui一1.7.2.custom.CSS文件和images目 

录,在下载jQuery uI 1.7.2时可进行选择,示例中选择的是 

smoothness”主题样式。 

i 

文件夹 

grid locde—en J 

3髓Jseript SeriDt Fi1e 

jquery-I 3 2 min J 

56髓3"3 ̄ript Script Fi1e 

JqueryjqGrid min J 

202硒83eript Seript Fil e 

Jquery-ui一1 T 2 cu=t蛳cs 

27邱cascading Sty1e Sheet Document 

Jquery-ui一1 T 2 enstom min j= 

189邸Jgcript Script File 

uI Jq4 ̄'id c=s 

10髓C4scading Style Sheet Do ̄ ̄ent 

图1 jqGrid运行所需文件 

在项目中添加一个“jgdemo.htm”文件,编辑该文件,在 

其头部添加如下代码: 

<head> 

<link rel=“stylesheet”type:“text/cSS”media=“screen’ ’

href=“jqgrid/jquery—ui一1.7.2.custom.CSS”/> 

<link rel=“stylesheet”type=“text/css”media:“screen’’ 

href=“jqgrid/ui.jqgrid.CSS”/> 

<script src=“jqgrid4query-1.3.2.min.js”type=“text/ 

javascript”></script> 

<script src=“jqgrid/jquery-ui-1.7.2.custom.min.js”type: 

“text/javascript”></script> 

<script src=“jqgrid/grid.1ocale-en.js”type=“text/javascript’’ 

charset=“gb2312”></script> 

<script src=“jqgrid/jquery.jqGrid.min.is”type=“text/ 

javascript”></script> 

2-2数据的加载和分页 

jqGrid能支持多种格式数据的显示,如xml、json、array 

等。由于ASP.NET中,可以将数据库中的内容通过DataSet直 

接输出为xml,所以示例中将以xml格式的数据为例。 

首先,在服务器端建立一个的后台数据源,为方便布署, 

这里选用Access作为后台数据库,数据库文件结构如图2所 

示 

图2数据库文件结构 

在客户端, jqGrid的调用格式为: jQuery 

(,# d—selector').jqGrid(options),在调用前还需要建立一个 

<table>和<div>标签用于iqGrid的显示,主要代码如下: 

<table id=”Jg“cellpadding=”0”cellspacing= 0”></table> 

<div id=“nay”></CIiv> 

_ 

“查找记录”和“重新加载”按钮。 

l总分 j蓝l 删 I90辫 骥黧 鍪篓 

h重置 一赢找 拄 黪-涮H _ 

一 ^箍 彩嘲矗 露 

2oo! 以

开始 ^ 。 麓 l参 疆螂童l / 

矧 

一 不以…开舳 

不在在…里 

^鲫 羹 】 移 誊 孵/ 

里 A31 赛 戤疆Ⅻ 辩 / 

2∞ 以…结柬 不以

结柬 A32 

巍 | 一Ⅻ誊 / 

包台 

不包含 

i 

|雾誊 誊 

、1鹰找记录按钮 

图4查找记录窗口 

caption:"jqGrid的使用 

)).navGrid( #nav ,{edit:false,add:false,dehfalse}); 

点击如图4的“查找记录”按钮,将弹出查找记录窗口中 

设置查询条件,当点“查找”按钮,客户端将向服务器端发送 

search变量,当一search值为“tme”时,还将向服务器发送 

searchField、searchString、searchOper等变量.其变量值分别对 

应查询的字段、查询的值和查询的关系符(说明: “eq”表示 

“”“

、 

Be”表示“<>”、 “It”表示“<”、 “le”表示“<=”、 

“甜”表示“>”、“ge”表示“>=”、“bw”表示“以…开始”、 

ew”表示“以…结束”、“cn”表示“包含”……)。要实现 

查询功能对应的服务器端的代码如下: 

if(seacherOn==。true“) 

{ 

string sField=Request.Params【”searchField。】: 

string sValue=Request.Params【IIsearchString‘】: 

string sOper=Request.Params【I.searchOper。】: 

wStr=DBAccess.retSqlstr(sField,sValue.sOper) 

//生成查询条件字符串 

} 

0IeDbDataAdapter da = new OIeDbDataAdapter('select 

stulD.name,sex,birth,score from jqtb。+wStr+“order by 

4-sort 4-…4-sord,DBAccess.ConnStr); 

retSqlstr()函数主要代码: 

public static string retSqlstr(string sField,string sValue.string 

sOper) 

{ 

string wStr,wOper; 

wOper=”= :wStr= : 

switch(sOper) 

{ 

case eq“: 

if(sField l=”score“){wOper= = +sValue 4-…:) 

else{wOper=’=。4-sValue;) 

//总分为数值型不需单引号 

break; 

case。Re : 

if(sField!=‘score ){wOper=。<> 4-sValue 4- 。:} 

else{wOper:“<>。4-sValue ̄) 

break; 

case bw :wOper=。like 4-sValue 4-。% :break; 

default:wOper= :break; 

} 

wStr=。where。4-sField 4-wOper; 

return wStr; 

) 

2.4添加、编辑、删除功能的实现 

在jqGrid中,提供功能强大的编辑功能,在文中将对 

jqGrid的表单编辑方式的使用进行说明。 

编辑面板的显示 

在上面查找面板的显示中,如果将edit,add,del属性值 

设置为“true”,便能显示出编辑按钮。除此之外.还可以设置 

更多属性来实现更强大的编辑功能,代码如下: 

caption:"jqGrid的使用 

)).navGrid( #nav ,f view:true),,/显示浏览记录按钮 

{reloadAfterSubmit:false,savekey:【true.1 3lJ navkeys:【true, 

38.40],jqModal:false,check0nSubmit:true,bottominfo: ( ) 

为必填内容,},//}泰加记录按钮设置 

{reloadAfterSubmit:false.jqModah false,checkOnSubmit: 

true,bottominfo: ( )为必填内容,}. 

∥编辑记录按钮设置 

{reloadAfterSubmit:false,jqModah false}. 

,/删除记录按钮设置 

{cIoseOnEscape:true},//查找记录按钮设置 

{navkeys:【true,38,40],jqModal:faIse.closeOnEscape:true 

))://浏览记录按钮设置 

以上属性说明如下: 

savekey:【true,13],回车键提交。 

navkeys: [ture,38,40】,上、下箭头查看记录。 

checkOnSubmit:true,编辑数据后弹出确认对话框 

reloadAfterSubmit:false,提交编辑后是否重新加载服务器 

端数据,由于jqGrid在客户端编辑后能即时更新编辑内容,这 

里选择不重新加载服务器数据。 

jqModal:false,弹出编辑窗1:3为非模式窗口。 

closeOnEscape:ture,ESC键关闭窗13。 

要实现编辑操作还需要在绑定列选项中添加相应的属性. 

代码如下: 

colModel:[{name: stulD ,index: stulD ,width:20,align: 

center ,editable:true,editoptions:{maxlength:7}, 

………………………………………………………__ 

实用第一 智慧密集 

亡l许编辑,编辑框最大长度为7 

formoptions:{rowpos:1,elmprefix:。( ) ).,/表单位置 

editrules:{required:true)),∥该字段为必填字段 

{name: name .index: name .align: center ,width:20. 

editable:true,editoptions:{maxlength:20}, 

formoptions:{rowpos:2。elmprefix: &nbsp:&nbsp:&nbsp: 

 ,)), 

{name: sex ,index: sex ,width:1 0,align: center . 

editable:true,edittype:”select",//允许编辑,类型为下接列表框 

editoptions: {value: man:男;woman:女 , 

defaultValue: 男,J.,/歹U表框值设置 

formoptions:{rowpos:3.elmprefix:    

   }). 

(name: birth .index: bitrh ,widtf1:20,align: center , 

editable:true, 

editoptions:{size:1 2,∥编辑框长度 

datalnit:function(e1){ 『编辑框值设置 

¥(eI).datepicker({dateFormat: YY—mm—dd , 

changeYear:true, 

changeMonth:true. 

yearRange: 1 900:2050 , 

nextText: 下月 , 

preText: 上月 。 

dayNamesMin:【 日 , 一 , 二 , 三 , 四 . 五 , 六,】. 

monthNamesShort:【 1月 , 2月 , 3月 , 4月 , 5月 , 

6月 ,r7月 , 8月 , 9月 , 1O月 , 11月 , 12月1)) ), 

defaultValue:function(){,/编辑框默认值设置 

var currentTime=new Date(); 

var month=parselnt(currentTime.getMonth0+1) 

month=month<=9 7‘0。+month:month; 

var day=currentTime.getDate0; 

day=day<=9 7。0 +day:day; 

var year=currentTime.getFullYear0; 

return year+ 一。+month十 一。+day:)). 

formoptions:{rowpos:4.elmprefix:     

  }), 

{name: score ,index: score ,width:1 0.align: center , 

editable:true。editoptions:{maxlength:3), 

formoptions:(rowpos:5,elmprefix:"    

 3}], 

在代码注释中已给出了属性值的说明,其中, “birth”日 

期字段的默认值由一段iavascript代码获得,而El期的设置使 

用了jQuery Ul下的El期插件datepicker,默认情况下, 

datepicker面板显示较大,可在jquery-ui一1.7.2.CHStOITI.CSS样式 

文件中添加、修改font—size属性的值,如.ui—datepicker f..・ 

font—size:llpx}。 

在客户端完成以上设置后,运行结果如图5,添加、编 

辑、删除等操作均能在客户端执行,但数据要在服务器端更新 

还需在编写服务器端代码,添加editing.aspx文件,并在客户 

端设置editurl:'editing.aspx 。当在客户端点击“提交”按钮后, 

图5添加记录表单 

将向服务器端发送oper(值为‘add’、 ‘edit’、 ‘del’) 

绑定字段变量。实现服务器端更新的主要代码: 

string oper:Request.Params【-oper J: 

string id=Request.Params[“id‘】 ∥id为标识列。客户端设 

stulD 

string sidVal=Request.Params[。stulD。】: 

string nameVal=Request.Params[ name。】 

string sexVaI=Request.Params[ sex 】: 

string birthVal:Request.Params[ birth。】: 

int scoreVal=ConveR.Tolnt32(Request.Params[。score。】): 

sexVal=(sexVal== man”7。男。:“女‘) 

switch(oper) 

{ 

case del”:DBAccess.deIRecIid):break: 

case add DBAccess.addRec{sidVal,nameVal,sexV 

birthVa1.scoreVa1);break; 

case。edit“:DBAccess.updateRec(sidVal,nameVal,sexV ̄ 

bitrhVal,scoreVa1);break; 

) 

2.5 iqGrid的“汉化” 

由于iqGrid是一个国外的开源项目,所以在使用的时候 

能需要进行“汉化”,找到 d.1ocale—en.js文件,将其对应 

英文改为中文即可,修改后加载该is文件时,需将编码设置 

charset=“gb2312”,不然将出现“乱码”。 

3 结语 

以上介绍了jqGrid+ASP.NET实现数据的显示、查找、 

览、编辑等常用功能的使用方法,已能满足实际开发的基本 

要。但事实上jqGrid的功能远非于此,还支持一些高级的 

性,如subGrid、拖拽等功能,限于篇幅不再赘述,有兴趣 

读者可参考iqGrid的官方网站,查看官方的英文文档及示例. 

参考文献 

【1】http://trirand.com/jqgrid/jqgfid.htm1. 

【2]http://www.secondpersonplura1.c qgriddocs/index.htm. 

f收稿日期:2010—02—22) 


本文标签: 编辑 数据 功能 记录 按钮