高分求 extjs 4.1 CheckboxGroup 动态生成列和保存
如题:
最近刚学extjs 有几个地方要求动态生成CheckboxGroup 的项,并能获取选中项,同时再次加载时要能绑定已选项
------解决方案--------------------那不就发送ajax,再ajax成功回调时根据返回的内容生成checkboxgroup就好了?
参考:Ext4.1动态生成checkboxgroup对象
------解决方案--------------------试一试把你控件调用(主程序)中的第一行代码
Ext.reg('ucCheckboxGroup', ucCheckboxGroup); 放到你的控件定义文件(也就是
‘ucCheckboxGroup.js’)里。再运行下看看还有没有问题?
------解决方案--------------------记得放到 ucCheckboxGroup.js 最下面,要先定义ucCheckboxGroup 再执行它
------解决方案--------------------是我疏忽了!发现问题所在了。楼主你引用的例子一定是给extjs3写的,因为:
在extjs4中定义新的class要用Ext.define,而extjs3定义自己的class才用 Ext.extend
比如:
Ext.define('Ext.ux.form.MultiSelect', {
extend: 'ClassNameYouAreExtending',
alias: 'widget.multiselect'
});
应外楼主你引用的方法(var ckbSupporting = new ucCheckboxGroup )也是extjs3的方法,
extjs4应该是Ext.create(。。。)
所以建议你找一个extjs4的控件.现在用的这个extjs3的即使能引用了,数据调用或其他方面也可能遇到问题
------解决方案--------------------extjs3的CheckboxGroup 插件里本身就没有innerCt这个属性,这个是extjs4 CheckboxGroup 里的属性。
你可能没理解全我10楼的回复,你以前的代码不光是引用那部分是extjs3,就连你在网上找的那个library(http://stevelee.iteye.com/blog/1328992)也是extjs3的。这样一定会有问题的。因为extjs4引擎基本全从写了,所以layout一定会出问题。
建议放弃那个library找一个extjs4的
------解决方案--------------------其实你要做动态生成CheckboxGroup 的项,我认为根本不需要额外的控件,就用extjs本身自带的CheckboxGroup 就好了,只不过需要和后台还有数据库做连接。用数据库的一个field的值(比如yes/no, 0/1, true/false ...)来控制你某一个Checkbox是否被选中.你更新Checkbox后再传回数据库,这样下次加载去读取数据库自然就能绑定已选项了。
实施起来的话先用store 加载数据,然后再赋值给checkbox
//建立checkbocgroup
var myCheckboxGroup = Ext.create('Ext.form.CheckboxGroup', {
fieldLabel: 'Checkboxes in two columns',
renderTo: Ext.getBody()
});
//建立store,然后在load store的时候加载checkbocgroup
var myStore = Ext.create('Ext.data.Store', {
autoLoad: true,
model: operationTypeModel,
listeners: {
load: function(store, records) {
myCheckboxGroup.removeAll();
myCheckboxGroup.add(Ext.Array.map(records, function(record) {
return {