2012-05-09 250 views
1

我被困在一種情況,在這種情況下,我必須'檢查'位於工具欄中的複選框'檢查'列表中存在的所有複選框。如何'檢查'列表中的所有複選框'檢查'單個複選框?

這裏的代碼來創建複選框列表: -

itemTpl: '<input type="checkbox" name="box" enabled="enabled" value="open" 
name="comment_status" id="status" <tpl if="active">checked="checked"</tpl> /> 
{groupName}{#}', 

這裏是我的複選框代碼: -

var checkBox = { 
      xtype: 'checkboxfield', 
       name : 'all', 
      // label: 'All', 
       itemId: 'all', 
       value: 'all', 
       lableWidth: "0", 
       width: 1, 
       padding: '0 0 15 30', 
       checked: false, 
       listeners: { 
        check:function() { 
        // alert("check"); 

         item = Ext.get("status"); 
         console.log("item:-"+Ext.JSON.encode(item)); 

         chkBox = item.down('input').dom; 

         var checkboxes = Ext.getStore('group'); 
         console.log(checkboxes.getCount()); 

         for(var i=0;i<checkboxes.getCount();i++){ 
         chkBox.checked = true; 
         } 

        }, 
        uncheck:function(){ 
        // alert("uncheck"); 
        } 
       } 
     }; 

在上述複選框檢查,我想,在「itemTpl」中定義的所有複選框會檢查,反之亦然。我知道我的代碼在檢查:function(){}是沒有那麼好,解決了我的問題(兩個代碼在不同的意見)。

所以,請告訴我一些這個問題的解決方案。

Thanx提前。

+0

您有與您的複選框相關的模型嗎? – Sephy

+0

是的,複選框列表有模型... – himanshu

+0

好吧,在任何情況下,你必須遍歷你的列表存儲,更改每個項目對應於複選框的布爾值爲true,你應該完成。 – Sephy

回答

2

好的,我更新了your senchafiddle使它工作。 在物質,這裏是我添加到您的代碼:

添加2個功能列表控制器,到工具欄上的複選框管理措施:

checkAll:function(){ 
    this.getCheckboxList().getStore().each(function(record){record.set('active', true);}); 
}, 
uncheckAll:function(){ 
    this.getCheckboxList().getStore().each(function(record){record.set('active', false);}); 
} 

而且隨着的複選框以添加工具欄統治他們(XD)以上列表:

{ 
     xtype : 'toolbar', 
     docked: 'top', 
     title: 'Check !', 
     items:[{ 
      xtype: 'checkboxfield', 
      name : 'all', 
      value: 'checkAll', 
      listeners:{ 
       check:function(){ 
        MyApp.app.getController('MainViewController').checkAll(); 
       }, 
       uncheck:function(){ 
        MyApp.app.getController('MainViewController').uncheckAll(); 
       } 
      } 
     }] 
    } 

這將需要你做一些CSS來使ckeckbox不錯,但行爲是在這裏。

+0

感謝名單烏拉圭回合的答案模式和列表的代碼,但我已經用下面的代碼 VAR項目= Ext.getStore的幫助(「組做了「); items.each(function(record){ record.set('active',true); }); 反正再次thanx爲你的支持和你的方式由控制器做也是接縫一個好主意。 – himanshu

+1

是的,這是主意。更新您的商店會自動更新視圖。使用每個元素是迭代商店所有元素的最簡單方法。控制器的方式應該是ST2中正確的方法。雖然我的方式可以更清晰,在checkAll複選框上定義的ref和控制器上定義的控件! – Sephy