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); 这种方法的话,好象不能实现,如果要动态生成或删除有什么好办法没有啊,另外就是还有导出的时候,根据显示的列导出信息,这里又要怎么办呢?麻烦高手们给个示例代码吧,越详细越好。谢谢了。。。 ^_^ 展开
 我来答
luffy1201
推荐于2017-09-23 · TA获得超过1523个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:576万
展开全部
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'事件。 视图将会被绑定到新的对象并刷新。

这个例子,是一个按钮加列的,你自己看看改改吧。有问题在问我吧。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式