gpt4 book ai didi

javascript - ExtJS 6.2 从存储更新 TreeGrid 数据,无需从服务器重新加载

转载 作者:行者123 更新时间:2023-12-03 05:48:55 24 4
gpt4 key购买 nike

我有两个共享同一商店的树形网格。当我将一个项目从一个项目拖动到另一个项目时,似乎所有正确的更新都会发生(记录从左树上的位置消失,放置在右树上,左树现在也显示新的位置)。

但是,如果我尝试将同一条记录拖回其原始位置,则它的父记录似乎从未更新为表明它已离开。

这是我检查是否可以丢弃元素的位置:

listeners: {
nodedragover: function(targetNode, position, dragData, e, eOpts) {
console.log("Trying to drop");
var ruleStore = this.getStore('rules');

// Ensure leaf is adding as a leaf
if (position === 'before') {
return false;
}

// Check first that the target is a pool and not a leaf
if (targetNode.data.leaf) {
console.log("A leaf! Can't drop here")
return false;
} else {
console.log("A node! Drop it like it's hot");
}

var allowDrop = true;
var dropMessage = [];

var records = dragData.records;
var targetPool = targetNode.data;
console.log("Dragdata: ", dragData);
console.log("targetPool: ", targetPool);
console.log("Store: ", Ext.getStore('Pools'));

// Check platform, sample names, indicies
for (var i = 0; i < records.length; i++) {
var rec = records[i].data;
if (rec.platform !== targetPool.platform) {
allowDrop = false;
dropMessage.push("Sample platform does not match target pool platform");
break;
} else if (targetPool.children.map(
function(child){ return child.sample_name;}).indexOf(rec.sample_name) > -1) {
allowDrop = false;
dropMessage.push("Sample is already in this pool");
break;
} else if (targetPool.children.map(
function(child){ return child.sample_index;}).indexOf(rec.sample_index) > -1) {
allowDrop = false;
dropMessage.push("Sample index is already in this pool");
break;
}
}
console.log(dropMessage);
return allowDrop;
},

当我使用 Ext.getStore('Pools') 获取商店时,它反射(reflect)该项目已从其旧父级中删除,现在位于新父级上。但是,nodedragover 事件中的 targetNode 仍具有旧状态。

如何获得 TreeView 来反射(reflect)商店,但又不从服务器重新加载商店(这一切都应该在客户端完成)?

我觉得我在这里缺少一些基本概念。

最佳答案

您可以使用

treeView.refresh();

treeView.refreshNode(recordModified);

因为 TreeView 是从view.table扩展而来的这里是文档 http://docs.sencha.com/extjs/6.0.2/classic/Ext.view.Table.html#method-refresh

关于javascript - ExtJS 6.2 从存储更新 TreeGrid 数据,无需从服务器重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40225529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com