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)
版权声明:本文标题:基于JQuery对开源插件jgGrid的功能应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710239616a563848.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论