jqGrid预定义格式化类型
格式化程序支持在表单,行,单元格编辑中将内容以自定义想要的格式来显示。格式化程序有2种形式,预定义的和自定义的,这节我们介绍的为预定义的格式化程序。
jqGrid模块需求
要使用格式化特性,需要在下载页面勾选 Formatter module后再下载jqGrid,下载地址:http://www.trirand.com/blog/?page_id=6。
语言选项
格式化选项语言在语言文件中定义。例如,grid.locale-xx (xx为2个字符代表使用的语言,如en对应english,目前不支持中文语言配置)。
所以再jqGrid核心js加载后,也要将格式化程序文件加载进来(对应的js语言文件),不同的格式化函数选项有不同的语言文件。下面为英语版本的语言文件
jQuery.jgrid = { //... formatter : { integer : {thousandsSeparator: " ", defaultValue: '0'}, number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'}, currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, date : { dayNames: [ "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], AmPm : ["am","pm","AM","PM"], S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, srcformat: 'Y-m-d', newformat: 'd/m/Y', parseRe: /[Tt\\\/:_;.,\t\s-]/, masks : { ISO8601Long:"Y-m-d H:i:s", ISO8601Short:"Y-m-d", ShortDate: "n/j/Y", LongDate: "l, F d, Y", FullDateTime: "l, F d, Y g:i:s A", MonthDay: "F d", ShortTime: "g:i A", LongTime: "g:i:s A", SortableDateTime: "Y-m-d\\TH:i:s", UniversalSortableDateTime: "Y-m-d H:i:sO", YearMonth: "F, Y" }, reformatAfterEdit : false }, baseLinkUrl: '', showAction: '', target: '', checkbox : {disabled:true}, idName : 'id' } //...
在这里你可以找到需要查看或者修改的的配置在使用预定义格式前。通过colModel中formatoptions配置可以重写这些配置的值。示例
jQuery("#grid_id").jqGrid({ ... colModel : [ ... {name:'myname', ... formatter:'number', ...}, ... ], ... });
上面的示例将用number格式化myname列的内容,例如原数据为1234.1,那么显示在grid中的内容被格式化为1 234.10。
列具体选项
可以为特别的列指定格式化函数选项,将会覆盖语言文件中的默认值,是用colModel中的formatoptions选项来定义
jQuery("#grid_id").jqGrid({ //... colModel : [ //... {name:'myname', ... formatter:'currency', formatoptions:{decimalSeparator:",", thousandsSeparator: ",", decimalPlaces: 2, prefix: "$ "} } , //... ], //... });
formatoptions配置的项依据formattype来确定
预定义的格式化类型
下表列出了jqGrid中的预定义格式化类型
所有预定义类型和编辑模式兼容,就是说数字,链接和email等需要转换,才能使他们被正确编辑
类型 | 选项(默认值参考语言选项) | 描述 |
---|---|---|
integer |
thousandsSeparator, defaulValue |
|
number |
decimalSeparator, thousandsSeparator, decimalPlaces, defaulValue |
|
currency |
decimalSeparator, thousandsSeparator, decimalPlaces, defaulValue, prefix, suffix |
和number一样,知识多了2个选项
|
date |
srcformat, newformat, parseRe |
|
none | 设置email将会给内容添加链接,链接地址为mailto:emai内容 | |
link | target | target 默认值为null。设置为这个,会构造一个连接,添加target属性,单元格内容作为href属性值 |
showlink |
baseLinkUrl, showAction, addParam, target, idName |
|
checkbox | disabled | disabled默认值为true。控制checkbox是否能被改变。设置为false,可以膝盖checkbox的值。 |
select | none | 不是真实的select,仅为一个特例,看下面的说明 |
actions |
{ keys: false, editbutton : true, delbutton : true, editformbutton: false, onEdit : null, onSuccess: null, afterSave:null, onError: null, afterRestore: null, extraparam: {oper:'edit'}, url: null, delOptions: {}, editOptions : {} } |
在行编辑模式这个类型的格式化函数很容易给指定的列添加一个按钮。 有2中类型的动作,编辑和删除。 editformbutton设置为true 将医用表单编辑对话框,取代行编辑模式 editOptions仅用于配置表单编辑模式。 |
"Select"格式化函数
select类型不是真实的select。这个用于使用某些编辑模式下,设置了edittype:'select'的情况。这个版本之前grid显示select的值,而不是键(Before this release we pass the value of the select in grid and not the key),例如:
jQuery("#grid_id").jqGrid({ ... colModel : [ {name:'myname', edittype:'select', editoptions:{value:"1:One;2:Two"}} ... ], ... });
这个情况下,grid的数据需要包含"One"或者"Two",设在myname这个列里面。配置formatter为select的代码如下
jQuery("#grid_id").jqGrid({ ... colModel : [ {name:'myname', edittype:'select', formatter:'select', editoptions:{value:"1:One;2:Two"}} ... ] ... });
数据包含键名称(“1” or “2”),但是值 (“One”, or “Two”) 将会显示在grid里面。
showlink 示例
看下面的代码
jQuery("#grid_id").jqGrid({ ... colModel: [ {name:'myname', formatter:'showlink', formatoptions:{baseLinkUrl:'someurl.php', addParam: '&action=edit'}, ...} ... ] ... });
上面将会得到下面的输出
http://localhost/someurl.php?id=123&action=edit
如果你想将生成的url中id键名称修改为myid,可以这样设置
jQuery("#grid_id").jqGrid({ ... colModel: [ {name:'myname', formatter:'showlink', formatoptions:{baseLinkUrl:'someurl.php', addParam: '&action=edit', idName:'myid'}, ...} ... ] ... });
上面将会得到下面的输出
http://localhost/someurl.php?myid=123&action=edit
但是我不知道123从哪里来的(But i don't know where from is value'123' ; )(译者注:凭感觉是此行数据对应的列的数据源中的值,或者此数据行的id。)
来源:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter
加支付宝好友偷能量挖...
原创文章,转载请注明出处:jqGrid预定义格式化类型