extjs中GridPanel怎么动态生成列?
首先我的GridPanel的tbar上有两个单选按钮,假如为a、b,选择a时,就显示a列,选择b时,就显示b列,如果是用grid.getColumnModel().set...
首先我的GridPanel的tbar上有两个单选按钮,假如为a、b,选择a时,就显示a列,选择b时,就显示b列,如果是用grid.getColumnModel().setHidden(列的位置, false); 这种方法的话,好象不能实现,如果要动态生成或删除有什么好办法没有啊,另外就是还有导出的时候,根据显示的列导出信息,这里又要怎么办呢?麻烦高手们给个示例代码吧,越详细越好。谢谢了。。。 ^_^
展开
1个回答
展开全部
Ext.onReady(function() {
var sm=new Ext.grid.CheckboxSelectionModel();
var cm=[new Ext.grid.RowNumberer(),sm,
{header:"编号", dataIndex:"id", width:65,hidden : true},
{header:"名称", dataIndex:"name", width:65},
{header:"路径", dataIndex:"url", width:65}
]
var fd = ["id", "name", "url"];
var store=new Ext.data.JsonStore({
fields:fd
})
var data=[{
id:1,name:"xiao",url:"sssssssssss",sex:"male"
}]
var grid=new Ext.grid.GridPanel({
sm:sm,
columns:cm,
store:store,
width:500,
height:400,
tbar:[{
text:"生成",
icon:"images/icons/add.png",
cls:"x-btn-text-icon",
handler:function(){
var res = {fields:[{name:"sex"}],columns:[{header:'性别',dataIndex:"sex",width:65}]};
var columns = res.columns;
var fields = res.fields;
for (var i = 0; i < fields.length; i++) {
fd.push(fields[i].name);
cm.push(columns[i]);
}
//重新绑定store及column
ss=new Ext.data.JsonStore({
fields:fd
});
grid.reconfigure(ss,new Ext.grid.ColumnModel(cm));
ss.loadData(data)
}
}]
})
var win=new Ext.Window({
title:"sssssss",
width:700,
height:500,
layout:"fit",
closable:true,
items:[grid]
})
win.show();
});
主要是grid里的reconfigure这个方法:配置grid以使用一个不同的Store和Column Model并触发'reconfigure'事件。 视图将会被绑定到新的对象并刷新。
这个例子,是一个按钮加列的,你自己看看改改吧。有问题在问我吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询