最近碰到一个ext grid列要动态展现(比如列根据用户选择的条件来显示,用户决定呈现那些列),而我们常规的是在定义grid的时候就已经定义好了column了,直奔主题……
1:我用的是struts2的json插件来返回相关的数据的json格式
比如在
<package name="jit_login" extends="json-default">
<!--by wuzhen 分地市清单(测试) ext 方式 动态grid列 2009-6-2-->
<action name="mmsSpbycity" class="mmsspbycityAction">
<result type="json">
</result>
</action>
</package>
在action里面通过设置要返回数据的getXX()方法来控制返回的数据,不需要返回的去掉带相应的getXX()方法即可,
2,页面上,在用户选定了条件后,通过form的submit发起请求,(没用ext.ajax.request,那样要自己写提交的参数)
3,json中返回 column的字段名以及对应的列名称,还有就是我们查询得到的data
4,取到数据后就是我们手动配置columns和相应的store了,这里要注意的是,最后一定要转换为对象,而不是字符串,我是这样处理的:
(1)header3[i]="{name:'"+dataIndex2[i]+"',mapping:"+i+'}'
(2)dataIndex3[i]="{header :'"+header2[i]+"',width : 140,sortable : true,dataIndex :'"+ dataIndex2[i]+"'}"
上面两条是相应的处理语句,最后通过循环拼装起来,得到两个字符串
但需要把这些字符串转化为对象
var lastheader2 =Ext.util.JSON.decode('['+你的字符串变量+']');
5,拼装好对象后,就是创建grid了,在创建之前应该先把上一次创建的grid给隐藏
var grid = Ext.getCmp('grid');
if(grid!=null)
{
grid.hide();
}
接着就是创建grid了
6,以上是大致思路
1:我用的是struts2的json插件来返回相关的数据的json格式
比如在
<package name="jit_login" extends="json-default">
<!--by wuzhen 分地市清单(测试) ext 方式 动态grid列 2009-6-2-->
<action name="mmsSpbycity" class="mmsspbycityAction">
<result type="json">
</result>
</action>
</package>
在action里面通过设置要返回数据的getXX()方法来控制返回的数据,不需要返回的去掉带相应的getXX()方法即可,
2,页面上,在用户选定了条件后,通过form的submit发起请求,(没用ext.ajax.request,那样要自己写提交的参数)
3,json中返回 column的字段名以及对应的列名称,还有就是我们查询得到的data
4,取到数据后就是我们手动配置columns和相应的store了,这里要注意的是,最后一定要转换为对象,而不是字符串,我是这样处理的:
(1)header3[i]="{name:'"+dataIndex2[i]+"',mapping:"+i+'}'
(2)dataIndex3[i]="{header :'"+header2[i]+"',width : 140,sortable : true,dataIndex :'"+ dataIndex2[i]+"'}"
上面两条是相应的处理语句,最后通过循环拼装起来,得到两个字符串
但需要把这些字符串转化为对象
var lastheader2 =Ext.util.JSON.decode('['+你的字符串变量+']');
5,拼装好对象后,就是创建grid了,在创建之前应该先把上一次创建的grid给隐藏
var grid = Ext.getCmp('grid');
if(grid!=null)
{
grid.hide();
}
接着就是创建grid了
6,以上是大致思路