【问题标题】:Sencha ExtJS grid checkbox model single mode deselectSencha ExtJS 网格复选框模型单模式取消选择
【发布时间】:2016-09-21 12:17:18
【问题描述】:

我想知道是否可以使用此 selModel 配置取消选择 ExtJS 6 网格中的选定行:

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

我有以下小提琴,它显示了我目前面临的行为:https://fiddle.sencha.com/#fiddle/1h4l

看起来取消选择一行的唯一方法是选择另一行,这不是我需要的。

【问题讨论】:

  • 我看起来像个虫子。我会在 Sencha 论坛上报告它 - allowDeselect 似乎没有任何效果。
  • @pagep 也是这么想的。我马上提交票。
  • @hbulens 是的,我在许多可能的情况下尝试了网格,但 allowDeselect 在 EXTJS 6 中没有任何效果,它很好 ExtJS 5。它的错误。

标签: javascript extjs checkbox extjs6 extjs6-classic


【解决方案1】:

不要直接创建选择模型;改用 xtype。将selModel 更改为此在您的小提琴中按预期工作:

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

【讨论】:

  • 确实有效。我将保持错误报告开放,因为这两种方法应该是等效的。我使用了 Chandra Sekar 的解决方法,但这是一个实际的解决方案。
  • 这两种方法是不等价的。当您手动创建复选框时,您会跳过 Ext.view.Table 类(由网格使用)在初始化选择模型时执行的一些步骤。使用 ExtJS 的一个好的经验法则是避免直接创建对象,如果它可以采用别名。
【解决方案2】:
selModel: Ext.create('Ext.selection.CheckboxModel', {
        checkOnly: 'true',
        allowDeselect: true,                              
 }),

如果您删除模式:'SINGLE',那么它可以正常工作。

如果您想一次选择一行,那么您应该检查“beforeselect”事件是否选择了任何其他行。

您可以使用以下方法获取已检查的数量:

var selectedRows = getSelectionModel().getSelection();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2011-10-03
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    相关资源
    最近更新 更多