2013-02-25 51 views
0

我有一个组合框,用户在其中选择一个值,该值传递给复选框数据存储,并从数据库(oracle)动态填充。我尝试了下面的代码。看起来,选中的参数被传递给复选框,我可以看到控制台上正在填充的数据。我只是无法呈现窗体上的复选框。我得到的错误是:typeError:this.items [0]是未定义的。使用复选框显示动态数据extjs

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 
      } 

帮助将不胜感激!

回答

0

指定Ext JS版本总是很有帮助。看起来这必须是2.x或3.x,而不是当前版本。

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

+0

版本为3.1。我修改了上面的代码。现在,我可以看到复选框存储中的数据,我无法将其呈现在@Rich Waters屏幕上 – redds1 2013-02-26 07:45:32