关于jqGrig如何写自定义格式化函数将JSON数据的字符串转换为表格各个列的值
首先介绍一下jqGrid是一个jQuery的一个表格框架,现在有一个需求就是将数据库表的数据拿出来显示出来,分别有id,name,details三个字段,其中难点就是details字段,它的数据是这样的'{"watchDomain":"xxx.com",....省略......"":""}',也就是json数据字符串,现在要把它显示在前端jqGrid表格上,列名就是json数据的Key值,值就是对应的value值,jqGrid允许我们自定义格式化函数,思路大概就是这样,从后台获取到数据的时候,把details的列写一个格式化函数该列的数据取出来,然后赋值给一个全局变量。colModel里面的name为details的值隐藏掉,写个自定义函数,自定义函数代码大概如下
/*
*描述details列的数据格式化函数
**/
function detailsFmatter(cellvalue, options,rowObject)
{
text=JSON.parse(cellvalue);//把JSON字符串转换为JSON对象再赋值给全局变量text
return cellvalue;
}
上面的cellvalue就是detalis的列的值,假设我的数据库details的数据为'{"sex":"男","addr":"广州"}',那上面的text就是text={"sex":"男","name":"小王"},(需要注意的是如果不用JSON.parse(cellvalue)这个方法转换的话页面展示的就是undefine)
假如你的数据库字段为id,name,details 而你的前端表格要显示的是却是name,sex,addr你就把获取到的数据的id和details隐藏掉,也就是说本来有5个列的。id,name.details,sex,addr,现在就显示name,sex,addr。
,让其它不显示出来,然后在sex,addr的列各写一个自定义格式化函数,返回它的值,代码大概如下
function sexFmatter(cellvalue, options,rowObject)
{ var isNone='';
isNone=text.sex;
if(isNone==null || isNone=="")
{ return "";}
return text.sex;}
下面我把全部代码贴上来吧
colWid = wid/12-12;
var text='';//全局变量,获取details的json数据
var colModel = [ {name : "sequence",index : "sequence", label : "序号",width : 30, height : 50, sortable : false,editable : true,fixed : true,align : "center"},
{name : "id", index : "id", label : "id", width : 50, height : 50,sortable : false, hidden:true,editable : false, align : "center",search : false},
{name : "name", index : "name", label : "名字",width : colWid, height : 50,sortable : false,editable : false, align : "center",search : false},
{name : "details", index : "details", label : "描述",hidden:true,width : colWid, height : 50,sortable : false,editable : false, align : "center",search : false,formatter:detailsFmatter},
{name : "sex", index : "sex", label : "性别", width : colWid, height : 50,sortable : true,editable : false, align : "center",search : false,formatter:sexFmatter},
{name : "addr", index : "addr", label : "住址", width : colWid, height : 50, sortable : false, fixed : true, hidden : false, align : "center", search : false, editable :false,formatter:addrFmatter},
];
/*
*描述列的数据格式化函数
**/
function detailsFmatter(cellvalue, options,rowObject)
{
text=JSON.parse(cellvalue);//把JSON字符串转换为JSON对象再赋值给全局变量text
return cellvalue;
}
function sexFmatter(cellvalue, options,rowObject)
{ var isNone='';
isNone=text.sex;
if(isNone==null || isNone=="")
{ return "";}
return text.sex;}
function addrFmatter(cellvalue, options,rowObject)
{ var isNone='';
isNone=text.addr;
if(isNone==null || isNone=="")
{ return "";}
return text.addr;}
关于jqGrig如何写自定义格式化函数将JSON数据的字符串转换为表格各个列的值的更多相关文章
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- eval函数解析json数据时加上圆括号的原因
var temp = eval("(" + data + ")"); //解析json数据 json是以”{}”的方式来开始以及结束的,在JS中,“{}”会被当 ...
- eval函数处理JSON数据需要加括号
在将服务器端构建好的JSON数据转化为可用的JavaScript对象时常常使用eval函数.如下: var dataJson = eval('(' + data + ')'); 在转化的时候需要将JS ...
- javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
原因很简单:因为在js中{}表示一个语句块(代码段),所有加上"()"表示表达式
- python笔记5:装饰器、内置函数、json
装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...
- Python格式化处理json数据的方式
1.问题 在遇到json数据的过程中,我们经常需要获取json数据中某个值的操作,如果是用get方法去取比较繁琐,接下来介绍两种方式来取值. 2.jsonpath来格式化处理json数据 2.1介绍 ...
- 【转】让浏览器格式化显示JSON数据之chrome jsonView插件安装
jsonView 用来让Chrome浏览器能格式化的显示JSON数据. 以上是网上找的方式,且试验成功! 步骤: 1.打开 https://github.com : 2.搜索 jsonView 链接: ...
- 前端自定义format函数,做字符串格式化功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js 日期格式化函数(可自定义)
js 日期格式化函数 DateFormat var DateFormat = function (datetime, formatStr) { var dat = datetime; var str ...
随机推荐
- 更加精确的定时器:dispatch_source_t
在使用定时器时,我们经常使用NSTimer,但是由于NSTimer会受RunLoop影响,当RunLoop处理的任务很多时,就会导致NSTimer的精度降低,所以在一些对定时器精度要求很高的情况下,应 ...
- Unity学习疑问记录之 动作动画忽略timeScale
http://www.bubuko.com/infodetail-968864.html
- 测试MailUtils,作用是发邮件
package cn.itcast.test; import java.io.IOException; import javax.mail.MessagingException; import jav ...
- 【转】Apache 配置虚拟主机三种方式
Apache 配置虚拟主机三种方式 原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html 一.基于IP 1. 假 ...
- Sql Server 2012新特性 Online添加非空栏位.
我们都知道,Sql Server在一个数据量巨大的表中添加一个非空栏位是比较费心的,缺乏经验的DBA或是开发人员甚至可能鲁莽地直接添加导致阻塞相应业务,甚至可能因为资源欠缺造成实例的全局问题.当然这都 ...
- ASP.NET MVC 5 Web编程1 -- 入门
开篇引言 说起ASP.NET MVC,我想作为WebForms开发者第一点要问的是:为什么要使用它?我的理解是:MVC是更细节化的框架,“细节可控”意味着你的系统更精致.具体体现在应用上.MVC的出现 ...
- 你真的会用java replaceAll函数吗?
replace.replaceAll.replaceFirst这三个函数会java的同学估计都用过,笔者已经用了2年多,可是,我们真的懂他们吗? 概述一下他们三个的用法: · replace(Char ...
- OpenGL快问快答
OpenGL快问快答 本文内容主要来自对(http://www.opengl.org/wiki/FAQ)的翻译,随机加入了本人的观点.与原文相比,章节未必完整,含义未必雷同,顺序未必一致.仅供参考. ...
- appledoc 使用
1.安装 git clone git://github.com/tomaz/appledoc.git cd ./appledoc sudo sh install-appledoc.sh 2.使用 进入 ...
- Elasticsearch 5.0 —— Head插件部署指南
使用ES的基本都会使用过head,但是版本升级到5.0后,head插件就不好使了.下面就看看如何在5.0中启动Head插件吧! 官方粗略教程 Running with built in server ...