【问题标题】:How to uncheck a node within treesote under treepanel? extjs 4.07如何取消选中treepanel下treesote中的节点? extjs 4.07
【发布时间】:2012-06-22 15:40:25
【问题描述】:

我有一个树存储,其中所有节点的初始配置都已检查:false,因此会出现一个复选框,允许用户检查树面板中的项目。然后,我从树形存储中获取选中的项目并将它们移动到另一个树形面板中的另一个树形存储。我的问题是,在移动节点时,如何确保未在它移动到的树形面板中选中它?

这是我所做的:

我已经获得了对我正在移动的节点的引用(添加到一个商店,从另一个商店中删除),并且我已将其设置为检查配置:false。当我在 firebug 中查看新树存储中的节点时,果然,checked:false,这是我想要的,但是,在面板中,视觉上,它仍然被选中。那么如何取消选中呢?

【问题讨论】:

  • 请发布您的代码。不清楚你到底在做什么。
  • 由于各种原因我无法发布代码。问题归结为最后一句话。如果您在代码、firebug 或其他方式中将检查更改为 false。该节点仍处于选中状态。如何更新树形面板以显示更改?
  • 请给我们举个简单的例子,我能想到导致这种情况发生的各种原因,但没有例子我不能告诉你是哪一个

标签: extjs view tree extjs4 treepanel


【解决方案1】:

发生这种情况的原因有几个。

  1. 新列的dataIndex与旧列的dataIndex不匹配(在使用treegrid的情况下)

  2. 您分配给两个商店的模型在两种情况下都不是同一个 Ext.data.Model。

  3. 我注意到如果您没有专门将配置选项添加到 Ext.data.Model 中,treenodes 和属性会出现一些奇怪的现象。因此,尝试将相同的模型分配给两棵树,并将“checked”作为 dataType:“boolean”的字段之一

【讨论】:

  • 在这种情况下,treestores 根本没有引用模型。
  • 您能详细说明第 3 点吗?
  • 您使用的 Extjs 4 对吗? Ext.data.Model 应该始终在 Extjs 4 中使用,因为没有它们组件有时无法正常工作(即使它们应该如此)。
  • 正确。但是,我的印象是您将“值”插入树库而不是模型。
  • 我相信我指定 node.checked = false 为我设置了一个属性,但它不是我想要的。相反,我需要 node.data.checked = false 所以这是一个愚蠢的错误。
【解决方案2】:

上周我遇到了同样的问题。 我上周做了这样的操作来解决它:

    currentNode.data.checked = false;
    currentNode.raw.checked = false ;
    currentNode.triggerUIUpdate();

如果没有triggerUIUpdate,它似乎无法正常工作。我正在使用 extjs4.2.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多