场景如下:
struts2+easyui实现动态表单,字段取自不同的表,datagrid显示的列名要根据不表的显示不同的字段。总之就是要控制datagrid中的columns属性。columns属性是一个数组。要控制这个属性就是要改变这个数组的内容。
从后台到前台原理如下:
1. 一个菜单链接进入动态表单之前要先进入一个action,通过这个action取得要显示的表单的字段信息--一个装有字段信息的List,把这个list在action中放在request中的attribute中;
2.在页面中通过request得到这个装有字段信息的List集合,通过遍历这个集合组装columns数组;
3.把这个数组放入到datagrid中即可。
代码如下:
JSP中:
<%
List fields = request.getAttribut("fieldList");
%>
<script>
var fields = '<%=fields%>'; //注:这个地方的引号要用单引号,我用了双引号就报错,不知道为什么?
var cols = [];
for(var i=0;i<fields.length;i++){
var field = fields[i];
cols.push({filed:field.name,title:field.text,width:80});
}
$('#tt').datagrid({
columns:[cols]
});
</script>
<html>
<table id="tt" title="Frozen Columns" class="easyui-datagrid" style="width:550px;height:250px"
url="data/datagrid_data.json"
singleSelect="true" iconCls="icon-save">
</table>
</html>