2012-04-30 64 views
0

我使用extjs4,我要根據我的JSON對象添加的複選框組,爲JSON創建的CheckBox對象

JSON

{"Provider":[{"id":3,"name":"Beta House","npi":0,"taxId":0, 
    "address":{ 
     "state":{"id":"1","stateName":"Alabama","code":"AL"}, 
    "zipcode":0,"country":"USA","email":"[email protected]"}, 
"type":"CP","LabProvider":[],"ListOfProvider":[]}]} 

ExtJS的 Ext.define('providerList ',{ extend:'Ext.data.Model', fields:['id','name'] });

  var provider = Ext.create('Ext.data.Store', { 
       model: 'providerList', 
       autoLoad: true, 
       proxy: { 
        type: 'ajax', 
        url : url+'/lochweb/loch/clinicalProvider/getAll', 
        reader: { 
         type: 'json', 
         root: 'Provider' 
        } 
       } 
      }); 

面板

var checkboxconfigs = []; 
       provider.each(function(record) { 
        checkboxconfigs.push(
          {     
           boxLabel: 'record.id', 
           name: 'record.name' 
          }) 
        }); 


var checkboxes = new Ext.form.CheckboxGroup({ 
      fieldLabel:'Providers', 
      columns:2, 
      items:checkboxconfigs 
      }); 

var patientProvider = new Ext.FormPanel({  
       renderTo: "patientProvider", 
       frame: true,     
       title: 'Association', 
       bodyStyle: 'padding:5px',   
       width: 500, 
       items: [{ 
        checkboxes        
         }],      
      }); 

有一個在form.How沒有複選框從JSON商店填充複選框

回答

0

你把它作爲孩子之前,您可以定義items陣列checkboxes。根據商店的每個記錄創建items數組的每個元素。

var items = []; 
provider.each(function(record) { items.push({boxLabel: 'up-to-you', name: 'up-to-you'}) },); 
var checkboxes = new Ext.form.CheckboxGroup({ 
     fieldLabel:'Providers', 
     columns:2, 
     items:items 
     }); 

在這裏,您可以確定每個複選框boxLabelname(的record屬性可以作爲前綴,後綴...)

+0

嗨感謝您的評論,我做了你的建議,但它沒有works.The代碼如下,var items = []; ) });提供程序.each(函數(記錄){ ) }); – user1321824

+0

items數組在注滿box標籤和name.so後仍爲空,因此表單中沒有複選框。 – user1321824

+0

我沒有要查詢的網址,所以我試圖向商店添加一條記錄,並且工作正常。你可以仔細檢查Ajax商店嗎?創建後是否有數據? –

0

幾個祕訣:

的定義的面板項刪除{}圍繞複選框,如下所示:

   items: [ checkboxes ] 

第二,請確保商店在您正在填充複選框。

我在我的應用程序中有一個類似的情況,即在面板呈現後商店可用。面板是動態與複選框列表填充的是這樣的:

panel.add(new Ext.form.CheckboxGroup({ 
     columns: 1, 
     vertical: true, 
     items: checkItems 
    })); 
    panel.doLayout(); 

編輯:還有一個小竅門:

刪除該代碼qutoes「」:

{     
    boxLabel: 'record.id', 
    name: 'record.name' 
} 

,或者你將結束與所有標籤'record.id'

+0

嗨lvojnovic,它仍然沒有工作 – user1321824

+0

你有錯誤嗎? – lvojnovic

+0

沒有錯誤,但顯示覆選框的形式 – user1321824