求教easyui datagrid如何动态生成列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教easyui datagrid如何动态生成列相关的知识,希望对你有一定的参考价值。
参考技术A 动态产生列的代码,其实就是按datagrid所需列的json格式,拼凑成字符串还可以实现列合并//用字符串产生grid所需的列
function AddColspanGridColumn(fieldName, title, width, align, rowStyle, formatterStyle,colspan)
var columnStr = "";
//Easyui的datagrid列的基本格式
columnStr = "field: '" + fieldName + "', title: '" + title + "', width: " + width;
//对齐方式
if (align != "" && align != null && align != undefined)
columnStr += ",align:'" + align + "'";
//是否合并列
if (colspan != 0 && colspan != "" && colspan != null && colspan != undefined)
columnStr += ",colspan:" + colspan;
//是否需要行样式
if (rowStyle != "" && rowStyle != null && rowStyle != undefined)
columnStr += ",styler: function (val, row, index) return '" + rowStyle + "';";
if (formatterStyle != "" && formatterStyle != null && formatterStyle != undefined)
columnStr += ",formatter: function (val, row, index) " +
"if (val == '' || val == undefined) val = '0';" +
"return \"<span style='" + formatterStyle + "'>\"+val+\"</span>\";";
columnStr += "";
return columnStr;
然后把产生的json字符串给datagrid,
var options = $("#" + gridName).datagrid("options");
var columnstr =
AddColspanGridColumn("AVG_PRICE", "户均价", 80, "left",
"background-color:#F6B03E;",
"font-size:14px;font-weight:bold;",
0)
options.columns = eval(columnstr);
设置列内容为超链接,参考函数里的formatter,设置列的内容的本回答被提问者采纳
jQuery easyui datagrid 如何在动态增加了列之后进行刷新?
遇到的主要问题是首次页面加载的时候,我将参数附加到url后边了(如: url: 'student.action?'+ paramStr),后边paramStr串里边的参数的值发生变化,由于paramStr串定义为了全局变量,如果用$('#CC).datagrid(options)方法刷新页面,调用的参数是没有改变之前的,但是如果用$('#CC).datagrid('load', params); 进行数据的重载,则前台页面就没有刷新,真是纠结啊
谢谢各位朋友的帮助,问题已经解决了,还是用$('#CC).datagrid(options)方法进行页面表头和数据的双重刷新。
在options的定义时,最好用queryParams进行定义。
在每次页面刷新的时候,都要对queryParams参数值进行重新的定义,方式如下:
var queryParams = $('#indicatorDataTable').datagrid('options').queryParams;
queryParams = $.extend(queryParams,"title": value , "title": value );
$('#indicatorDataTable').datagrid('options').queryParams = queryParams;
$('#indicatorDataTable').datagrid(options);
$('#tt').datagrid(
columns:[[
field:'itemid',title:'Item ID',width:80,
field:'productid',title:'Product ID',width:80,
field:'listprice',title:'List Price',width:80,align:'right',
field:'unitcost',title:'Unit Cost',width:80,align:'right',
field:'attr1',title:'Attribute',width:100,
field:'status',title:'Status',width:60
]]
); 参考技术B 重新 reload数据,就会进行刷新追问
恩,reload是可以的,数据传输到了后台。但是前台还是没有刷新,我现在做的类似于报表的展示,可能需要加载不同的表头展示的,所以在刷新的同事,表头也是需要刷新的,否则展示不出来数据。
参考技术C 重新调用时改变一下url不行吗?$('#CC').datagrid(
url:'student.action?‘+新的参数
)追问
不行,采用$('#CC').datagrid(url:'student.action?‘+新的参数) 跟$('#CC).datagrid('load', params)方法是一个效果,参数倒是准确的传递到了后台,但是前台并没有刷新。
参考技术D $('#indicatorDataTable').datagrid(options);这个options没有定义呀,我现在想刷新datagrid,让单列排序恢复没有点击排序图标,相当于页面列头属性跟数据双重刷新,这个怎么弄呢?以上是关于求教easyui datagrid如何动态生成列的主要内容,如果未能解决你的问题,请参考以下文章
关于jquery easyui的datagrid组件,如何动态加载表头及其数据