2016-09-21 24 views
3

我想知道是否有可能取消在ExtJS的6格選定行與此selModel配置:煎茶ExtJS的電網模型複選框單模取消

selModel: Ext.create('Ext.selection.CheckboxModel', { 
      mode: 'SINGLE', 
      checkOnly: 'true', 
      allowDeselect: true,        
}), 

我有以下搗鼓這說明我目前面臨的行爲:https://fiddle.sencha.com/#fiddle/1h4l

它看起來像取消選擇行的唯一方法是通過選擇另一行,這不是我所需要的。

+0

我看起來像一個錯誤。我會在Sencha論壇上報告 - allowDeselect似乎沒有任何影響。 – pagep

+0

@pagep也這麼想。我馬上提交票。 – hbulens

+0

@hbulens是的,我在很多可能的場景中嘗試過網格,但允許選擇不會在EXTJS 6中產生任何效果,它的優秀ExtJS 5.它的錯誤。 – UDID

回答

1

不要直接創建選擇模型;改用xtype。將selModel更改爲在您的小提琴中按預期工作:

selModel: { 
    selType: 'checkboxmodel', 
    mode: 'SINGLE', 
    checkOnly: 'true', 
    allowDeselect: true    
}, 
+0

這確實有用。我會保持開放的報告,因爲這兩種方法應該是等價的。我使用Chandra Sekar的解決方法,但這是一個實際的解決方案。 – hbulens

+0

這兩種方法並不相同。當您手動創建複選框時,可以跳過Ext.view.Table類(由網格使用)在初始化選擇模型時執行的多個步驟。 ExtJS的一個好的經驗法則是避免直接創建對象,如果它可以採用別名。 –

0
selModel: Ext.create('Ext.selection.CheckboxModel', { 
     checkOnly: 'true', 
     allowDeselect: true,        
}), 

如果你刪除模式:'SINGLE',那麼它工作正常。

如果你想一次選擇一行,那麼你應該檢查「beforeselect」事件,如果任何其他行被選中或沒有。

您可以通過使用得到檢查的人的數量:

var selectedRows = getSelectionModel().getSelection();