2014-07-21 5 views
0

안녕하세요, 안녕하세요, stackoverflow 친구들! 동적 체크 박스, 라디오, 체크 박스 그룹, 라디오 그룹 extjs

나는 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' 
       } 
     ] 
    }); 

에 대한 helpfull입니다 그리고 내 가게 같은 것입니다 :

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

내 checkboxgroup 같은 것입니다 :

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가 표시되지 않는 이유 내가 아는 해달라고입니다

.

답변

0

checkboxGroup에 checkboxArray를 추가하면 배열이 비어있는 것이 문제입니다. 저장소를로드하라는 Ajax 요청이 완료되고 배열이 채워지면 checkboxGroup의 항목은 업데이트되지 않습니다.

솔루션은 그것을 작성 후 checkboxGroup에 checkboxArray을 추가하는 것입니다 또한

... 
    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 

은 이미 자신의 배열이기 때문에. 그 라인은 더 이상 필요하지 않습니다.

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

그리고 형태를로드를 썼다 짐칸과 라디오 필드를 그놈의 물건에 넣는 것

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 
    }); 
관련 문제