为JSON对象创建CheckBox

时间:2012-04-30 04:49:16

标签: extjs4

我使用的是extjs4,我需要根据我的JSON对象添加复选框组,

JSON

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

ExtJs的     Ext.define('providerList',{                     extend:'Ext.data.Model',                     字段:['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                               
                        }],                     
            });

表单中没有复选框。如何从JSON商店填充复选框

2 个答案:

答案 0 :(得分: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
         });

在这里,您可以为每个复选框确定boxLabelnamerecord的属性可以用作前缀,后缀......)

答案 1 :(得分:0)

一些提示:

在面板项的定义中,删除{}周围的复选框,如下所示:

                items: [ checkboxes ]

第二,确保在填充复选框时商店可用。

我的应用程序中有类似的情况,在呈现面板后商店可用。 Panel是动态填充的复选框列表,如下所示:

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

编辑:另一个提示:

从此代码中移除qutoes'':

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

或者你最终会得到所有标签'record.id'