请教,extjs4 如何动态创建grid的columnModel

竹兜 2012-05-31 01:26:09
grid的表头列是根据后台从数据库中查出的结果显示的,没有固定的多少列。
...全文
955 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sleeper01 2014-03-20
  • 打赏
  • 举报
回复
其实不用这么复杂,在grid渲染完之后,只需要grid.store.add({}),就能增加一行了
竹兜 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

var model="[{header:'日期/站名',align:'center',sortable:false,dataIndex:'statis_date',renderer:onLineEdit.formatDate,enableColumnHide:false,width:90,editor:{allowBlank:false,xtype:'datefield',format:'Ymd……
[/Quote]
十分感谢,分多少都可以,主要是能够解决问题就好。
竹兜 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

是一样的吧,我没有做增加。你把自定义的属性赋值后,对应的store定义好,具有自定义的字段后,增加是一样的吧。
主要是这里。在store load数据后,假如你只知道id,其他都是动态的,用key value返回,你在前台,把keyvalue加到js对象中就行了。JS就是这样,可以动态加属性,方便。
[/Quote]
谢谢,有道理,不过在动态定义新的store的时候发现了一个问题,就是说:store的model也是动态定义的,而这个model是根据fields来动态定义的,我如何能够先移除原来的fields,然后增加新的fields呢?
燥动的心 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 5 楼 的回复:

是一样的吧,我没有做增加。你把自定义的属性赋值后,对应的store定义好,具有自定义的字段后,增加是一样的吧。
主要是这里。在store load数据后,假如你只知道id,其他都是动态的,用key value返回,你在前台,把keyvalue加到js对象中就行了。JS就是这样,可以动态加属性,方便。

谢谢,有道理,不过在动态定义新的store的时候发现了一……
[/Quote]
重新构造也行啊。
燥动的心 2012-06-01
  • 打赏
  • 举报
回复
动态定义model,动态定义column就行了。
这个刚做过,可以实现。
我的积分呢 2012-06-01
  • 打赏
  • 举报
回复
var model="[{header:'日期/站名',align:'center',sortable:false,dataIndex:'statis_date',renderer:onLineEdit.formatDate,enableColumnHide:false,width:90,editor:{allowBlank:false,xtype:'datefield',format:'Ymd'},field:{xtype:'datefield',format:'y-m-d'}},{header:'开边门类型',align:'center',dataIndex:'mantkt', field:{xtype:'combobox',name:'manTket1',id:'manTket1',store:comboxStore, queryMode: 'local',width:80,valueField:'manTktTypName',displayField:'manTktTypName'}}";
var i=0;

if(fieldList.length > 10) {
fieldList = [];
}
Ext.each(json,function(item){

if("03" == Line && (item.station_nam=="广州东站" || item.station_nam=="林和西")) {

} else if(item.station_cd =='ZZ') {

} else {
model+=",{header:'"+item.station_nam+"',align:'center',dataIndex:'station_"+ Line + item.station_cd +"', editor: {allowBlank: false,xtype: 'numberfield'}}";
fieldList.push("station_"+ Line + item.station_cd);
}
i++;
});



if(Line=='30') {
model+=",{header:'广州东站',align:'center',dataIndex:'station_0301'}";
model+=",{header:'林和西',align:'center',dataIndex:'station_0302'}";
fieldList.push("station_0301");
fieldList.push("station_0302");
}
model+=",{header:'合计',align:'center',dataIndex:'total_col'}]";
if(i==0){model="[]"}
var jsonColumn=eval(model);
grid.reconfigure(store,jsonColumn);
grid.render();
我的积分呢 2012-06-01
  • 打赏
  • 举报
回复
我给你帖代码。。。lz给多少分?
燥动的心 2012-06-01
  • 打赏
  • 举报
回复
是一样的吧,我没有做增加。你把自定义的属性赋值后,对应的store定义好,具有自定义的字段后,增加是一样的吧。
主要是这里。在store load数据后,假如你只知道id,其他都是动态的,用key value返回,你在前台,把keyvalue加到js对象中就行了。JS就是这样,可以动态加属性,方便。
竹兜 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

动态定义model,动态定义column就行了。
这个刚做过,可以实现。
[/Quote]
您做的这个实现了增加记录的功能了么?就是根据你的表头添加相应的记录,类似于editgrid的动态添加一行然后保存的效果。谢谢了
竹兜 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

这就要看你从后台返回的Json了

在Json里可以包含列定义,用这个列定义来重新制定你的Grid的表头列
[/Quote]
是的,我在后台定义了一个表头的model,然后作为数据给传给grid的columns,这样倒是能够实现表头的动态加载,可是我在动态添加一行记录的时候,不知道该如何动态的创建一个model来给store作为插入的依据呢,这应该怎么办呢?
asuka986 2012-05-31
  • 打赏
  • 举报
回复
这就要看你从后台返回的Json了

在Json里可以包含列定义,用这个列定义来重新制定你的Grid的表头列

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧