2016-09-21 25 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();