【问题标题】:Reload grid selection after deletion of row in extjs在 extjs 中删除行后重新加载网格选择
【发布时间】:2015-07-29 21:30:14
【问题描述】:

我有一个带有一列的网格,当用户选择它时,它用于在各种文本字段中显示信息,复选框嵌入在右侧的面板中。我已经在网格中的行级别实现了删除功能。现在我希望这两件事都发生。

1) 默认选择是在删除任何行后默认选择第一行。

2)右侧面板中各个组件中的信息被清除。

目前发生的情况是,与已删除行对应的信息在删除后保留,因为在网格中没有选择任何内容,因此之前选择的选项用于在右侧显示信息。

【问题讨论】:

标签: extjs grid refresh panel


【解决方案1】:

由于从网格中删除记录意味着取消选择它,您实际上只需要监听网格中选择的更改并在不存在选择时实现所需的行为。

我推荐selectionchange 事件,因为您可以通过检查新的选择状态来涵盖选择和取消选择:

grid.on({
    'selectionchange': function(sm, selectedRecords) {
        if (selectedRecords.length === 0) {
            // no selection -> clear fields or select the first row
        } else {
            // selection exists -> load data into fields
        }
    }
});

(假设您使用的是single selection,即可以选择一行或不选择行)

【讨论】:

  • 非常感谢马特的帮助。我目前正在使用 cellclick 作为该网格的侦听器,因此 selectionchange 和 cellclick 都不起作用。虽然 selectionchange 确实有助于解决我的问题。您能否告诉我如何使用此侦听器找出所选单元格的值,因为如果要使用此侦听器,我需要相应地编辑当前代码?我只有一列,即“名称”,其中多行包含各种名称。
  • 所以我假设您使用的是单元选择模型?尝试使用sm.getPosition()。我不知道你的 ExtJS 版本,如果是 5.x。在 4.x 中,方法的名称是 getCurrentPosition
  • 我正在使用 ExtJS 4。使用 selectedRecords[0] 我得到了第一行,使用 selectedRecords[0].get("name") 我得到了单元格的值。总之谢谢。检查您的帖子作为官方答案:)
猜你喜欢
  • 2014-10-11
  • 2012-06-01
  • 2015-05-05
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多