0

我正在使用 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', 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                               
                        }],                     
            });

表单中没有复选框。如何从 JSON 存储中填充复选框

4

2 回答 2

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
         });

在这里您可以确定每个复选框的boxLabeland (的属性可以用作前缀、后缀...)namerecord

于 2012-04-30T06:02:39.037 回答
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'

于 2012-04-30T10:45:35.443 回答