您的位置:首页 > 产品设计 > UI/UE

easyui的datagrid动态列

2015-06-12 16:16 471 查看
虽说easyui有点丑,但功能算是不错的。

我在工作中遇到了这样一个问题,先说下需求:

1.系统中可以动态维护表,就是对表可以进行增删改的操作

2.上述的这些表都对应有唯一的id存在一张表中,姑且叫做data_table吧

3.每张表的字段都动态可维护的

4.这些表的字段与它们所在的表一样都有一个唯一的id存在一张表中,目前命名为data_table_colmn

5.点开一个页面,这个页面分左右结构,左边是一棵树,右边是一个列表,点击树的不同节点,会刷新列表显示这个节点所对应的表的所有数据。

难点:

1.我使用的框架是ssh整合的,前台展示使用了easyui。

2.之前做的都是表结构不会改变的,所以它们本都应该有一个实体类用于hibernate使用,而现在本不到了。因为我们没有做到在前端页面更改数据库表,就将实体类修改一遍,这样根本不现实。

3.在datagrid中怎么显示呢?

我的解决方法是:

1.原来hibeinate使用实体类,然后把实体放入List传给datagrid,再把List放入封装好的DataGrid对象中,而现在使用sql来进行增删改,中间使用JSONObject对象,然后将JSONObject对象放入List,再把List放入封装好的DataGrid对象中。

2.原来datagrid中需要传入的数据仅仅是那个数组而已,如何拼接数组就仁者见仁,智者见智了。

就这样,问题解决了。

总结:这种简单的东西做起来都感觉吃力,其实就是积累和理解的不够罢了。尤其是这回datagrid的动态列的问题,实际上就是我理解的不够而已。只要理解了需要传入的仅仅是个数组,那么,就可以很快完成了。
$.ajax({
url : 'data_table_columnAction!sendData.action?table_id='+tableID,
success : function (data){
data=$.parseJSON(data);
c_c_l=data.column_code_list;
c_n_l=data.column_name_list;
t_n=data.table_code;
var col=[];
var fcol=[];
for(var i=0;i<c_c_l.length;i++){
if(c_n_l[i]=='正文'){
col[i]={title : c_n_l[i] ,field : c_c_l[i],width:150,formatter:function(value){return dagong.suolve(value,50)}};
}else if(c_n_l[i]=='借款详情'){
col[i]={title : c_n_l[i] ,field : c_c_l[i],width:150,formatter:function(value){return dagong.suolve(value,50)}};
}else{
col[i]={title : c_n_l[i] ,field : c_c_l[i],width : 150};
}
}
share.data('node', col);
datagrid = $('#datagrid').datagrid({
url : 'data_table_columnAction!datagrid_resultShow.action?column_code_list='+c_c_l+'&table_code='+t_n,
title : '',
iconCls : 'icon-save',
pagination : true,
pageSize : 10,
pageList : [ 10, 20, 30, 40 ],
fit : true,
fitColumns : false,
nowrap : false,
border : false,
striped:true,
selectOnCheck : true,
columns : [col],
onLoadSuccess : function(){
}
});
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: