动态复选框,收音机,复选框组,无线电组extjs

时间:2014-07-21 09:14:41

标签: javascript extjs

嗨亲爱的stackoverflow家伙!

我在stackowerflow中搜索过这个问题,但没有一个对我有帮助

my model is like that:
Ext.define('soru', {
        extend : 'Ext.data.Model',
        fields : [{
                name : 'CEVAP',
                type : 'string'
                },
                {
                name : 'VALUE',
                type : 'int'
                },
                {
                name : 'RECNO',
                type : 'int'
                }
        ]
    });

我的商店就像:

checkboxArray = [];  
var myStoresoru = Ext.create('Ext.data.Store', {
        model : 'soru',
        id:'sorustore',
        proxy : {
            type : 'ajax',
            url : 'fetchsoru.php',
            reader : {
                type : 'json',
                root : 'data'
            }
        },
        listeners: {                                                                                                                          
                load: function(value, records, options) {                                                                                               
                    for(var i = 0; i < records.length; i++) { 
                           console.log(records);  
                           console.log(records.length);                                                                                
                      checkboxArray.push(new Ext.form.Checkbox(
                                    { 
                                        boxLabel: value.data.items[i].data.CEVAP,
                                        name: value.data.keys[i],
                                        xtype: 'checkbox',
                                        inputValue: value.data.items[i].data.VALUE,
                                        id: value.data.items[i].data.RECNO
                                    }));
                      //{id: records[i].data.id, boxLabel: records[i].data.pagetitle});                                              
                    }                                                                                                                               
                }  
            }, 

        autoLoad : false
    });                                                                                                                                   
myStoresoru.load();  

我的复选框组就像:

var check= new Ext.form.CheckboxGroup({  
                xtype: 'checkboxgroup',//combo çoklu seçim olmalı
                fieldLabel: 'İklimsa’yı tercih nedeniniz? ',
                //store: myStoresoru,
                labelWidth:300,
                //columns:2,
                name : 'tercih',
                id : 'tercih',
                itemId: 'tercih',
                hiddenName: 'tercih',
                items:[checkboxArray]   

});

并形成:

form = Ext.create('Ext.form.Panel', { items : [check]
    });

好吧,我的问题是复选框没有加载到checkboxgroup中。当我在控制台上键入checckboxArray时我可以看到checckboxArray存在,但我不知道为什么checckboxes没有显示

2 个答案:

答案 0 :(得分:1)

感谢您重播我。我已经解决了,我想分享我的解决方案,以帮助在extjs中搜索动态复选框和chexbox组的人

在我的商店里我写了我的checkboxgroup和radiogroup

var myStoresoru = Ext.create('Ext.data.Store', {
        model : 'soru',
        id:'sorustore',
        proxy : {
            type : 'ajax',
            url : 'fetchsoru.php',
            reader : {
                type : 'json',
                root : 'data'
            }
        },
        listeners: {                                                                                                                          
                load: function(value, records, options) {  

                     for(var i = 0; i < records.length; i++) { 

                           //console.log(records);  
                           //console.log(records.length); 
                        if(value.data.items[i].data.GROUPID==0)
                            {

                                checkboxGroupArray.push(new Ext.form.CheckboxGroup(
                                { 
                                    fieldLabel: value.data.items[i].data.SORU,
                                    labelWidth:300,
                                    border: '10 5 3 10',
                                    bodyPadding: 10,
                                    columns:2,
                                    id: value.data.items[i].data.RECNOSORU,
                                    xtype: 'checkboxgroup',
                                    originalValue:value.data.items[i].data.SORUTIPI
                                    //layout: 
                                }));
                            }
                            else
                            {
                                radioGroupArray.push(new Ext.form.RadioGroup(
                                { 
                                    fieldLabel: value.data.items[i].data.SORU,
                                    border: '10 5 3 10',
                                    bodyPadding: 10,
                                    labelWidth:300,
                                    columns:2,
                                    id: value.data.items[i].data.RECNOSORU,
                                    xtype: 'radiogroup',
                                    originalValue:value.data.items[i].data.SORUTIPI
                                }));
                            }


                    } }  
            }, 

        autoLoad : false
    });

将checboxes和radiofields加载到他们的gruop项目之后加载它们

var myStorecevap = Ext.create('Ext.data.Store', {
        model : 'cevap',
        id:'cevapstore',
        proxy : {
            type : 'ajax',
            url : 'fetchcevap.php',
            reader : {
                type : 'json',
                root : 'data'
            }
        },
        listeners: {                                                                                                                          
                load: function(value, records, options) {  

                     for(var i = 0; i < records.length; i++) { 

                           //console.log(records);  
                           //console.log(records.length); 
                           if(value.data.items[i].data.GROUPID==0)
                            {
                                checkboxArray.push(new Ext.form.Checkbox(
                                { 
                                    boxLabel: value.data.items[i].data.CEVAP,
                                    name: value.data.keys[i],
                                    xtype: 'checkbox',
                                    labelWidth:300,
                                    columns:2,
                                    inputValue: value.data.items[i].data.VALUE,
                                    id: value.data.items[i].data.RECNO,
                                    stateId:value.data.items[i].data.SORUTIPI
                                }));

                            }
                            else
                            {
                                radioArray.push(new Ext.form.Radio(
                                { 
                                    boxLabel: value.data.items[i].data.CEVAP,
                                    name: value.data.items[i].data.RECNOSORU,
                                    xtype: 'radiofield',
                                    labelWidth:300,
                                    columns:2,
                                    inputValue: value.data.items[i].data.VALUE,
                                   // id: value.data.items[i].data.RECNOS,
                                  // stateId:value.data.items[i].data.SORUTIPI


                                }));

                            }


                        //console.log(checkboxGroupArray);

                    }
                    //var totalcount=checkboxArray.length+radioGroupArray.length;

                    for(var i = 0; i < checkboxArray.length; i++) 
                        {
                            for(var j = 0; j < checkboxGroupArray.length; j++) 
                            {
                                console.log(value.data.items[i].data.RECNOSORU);
                                var den=value.data.items[i].data.RECNOSORU;
                                if(checkboxGroupArray[j].id==den) 
                                {
                                    checkboxGroupArray[j].add(checkboxArray[i]);
                                    console.log(checkboxGroupArray);
                                }
                            }
                        }
                    Ext.getCmp('forms').add(checkboxGroupArray);

                    for(var k = 0; k < radioArray.length; k++) 
                        {
                            for(var m = 0; m < radioGroupArray.length; m++) 
                            {
                                //console.log(value.data.items[k].data.RECNOSORU);
                                var denm=radioArray[k].name;
                                console.log(radioArray[k].name);
                                //console.log(radioGroupArray[m].id);
                                if(radioGroupArray[m].id==denm) 
                                {
                                    radioGroupArray[m].add(radioArray[k]);
                                    console.log(radioGroupArray[m]);
                                }
                            }
                        }
                    Ext.getCmp('forms').add(radioGroupArray);
                    arraytext.push(new Ext.form.TextArea(
                                {
                                    xtype     : 'textareafield',
                                    grow      : true,
                                    labelWidth:300,
                                    autoScroll   :    true,
                                    name      : 'message',
                                    id: 'message',
                                    fieldLabel: 'İlave Görüş ve Notlarınız',
                                    anchor    : '100%'
                                    }));


                    Ext.getCmp('forms').add(arraytext);



                }  
            }, 

        autoLoad : false
    });

答案 1 :(得分:0)

问题是当您将checkboxArray添加到checkboxGroup时,数组为空。当加载存储的ajax请求完成并且数组已填满时,checkboxGroup中的项目不会更新。

解决方案是在填充后将checkboxArray添加到checkboxGroup:

...
  load: function(value, records, options) {                                                                                               
    for(var i = 0; i < records.length; i++) { 
      console.log(records);  
      console.log(records.length);                                                                                
      checkboxArray.push(new Ext.form.Checkbox(
        { 
            boxLabel: value.data.items[i].data.CEVAP,
            name: value.data.keys[i],
            xtype: 'checkbox',
            inputValue: value.data.items[i].data.VALUE,
            id: value.data.items[i].data.RECNO
        }));

      check.add(checkboxArray);

      //{id: records[i].data.id, boxLabel: records[i].data.pagetitle});                                              
   }


此外,您应该将数组添加到复选框组的方式是:

items: checkboxArray

因为它已经是它自己的数组。不过那条线不再必要了。