使用extjs中的复选框显示动态数据

时间:2013-02-25 19:56:06

标签: extjs

我有一个组合框,用户在其中选择一个值,该值将传递给复选框数据存储,并从数据库(oracle)动态填充。我试过下面的代码。似乎所选参数被传递给复选框,我可以看到在控制台上填充的数据。我无法在表单上呈现复选框。我得到的错误是:typeError:this.items [0]未定义。

    testArray = new Array();
    var testStore = new Ext.data.JsonStore({
        proxy:new Ext.data.HttpProxy({
        method:'GET',
        prettyUrls:false,
        url:'kiu.htm',
        listeners:{
            'loadexception':{
            fn:test.form.data.loadException
            }
        }
        }),
        fields:["id", "display"],
        reader:new Ext.data.JsonReader({
        id:'id',
        root:'results',
        totalProperty:'totalCount',
        fields:new Ext.data.Record.create([
            {name:'id',type:'int'},
            {name:'display',type:'string'}
        ])
        }),
        listeners:{      
        load: function(t, records, options, success) {
            for(var i=0; i<records.length; i++) {
              testArray.push({name:records[i].data.id, boxLabel: records[i].data.display});
              alert(testArray[i].id);
            }
        }
        }
    });


    {
                         xtype:'combo',
                         id:'comboid3',                         
                         store:combostore,
                         displayField:'display',
                         valueField:'id',
                         tabIndex:1,
                         loadingText:'Loading combo...',
                         listeners :{
                                   select:function(event){
                                         testStore.baseParams = {
                                                "comboid":Ext.getCmp('comboid3').getValue()
                                            };                                        

                                         testStore.load();

                                    }
                         }

                   },
                   {


                                xtype:'checkboxgroup',
                                                         fieldLabel:'Check',                             
                               items:testArray
           }

帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

指定Ext JS版本总是有用的。它似乎必须是2.x或3.x而不是当前版本。

问题是时间,加载调用是异步的,因此通过尝试以这种方式利用testArray,您可能在解析复选框组的items属性时引用空数组。你有几个选择...一个是获取对复选框组的引用并将项目添加到其中,另一个是不要将复选框组放在表单中,直到调用返回,然后添加它填充的项目数组。在任何一种情况下,您可能需要在加载处理函数中查找对FormPanel或CheckboxGroup的组件引用,并调用'add'方法来添加子项。