【问题标题】:CellTree suggestion - AsyncDataProvider add/remove/updateCellTree 建议 - AsyncDataProvider 添加/删除/更新
【发布时间】:2012-05-01 23:55:01
【问题描述】:

我对 GWT CellTree 有疑问,此时我想知道它是否真的准备好迎接黄金时段了。也许我没有得到默认用例??

到目前为止,在 Web 上看到的大多数问题都与使用 CellTree 但使用简单的ListDataProvider(例如GWT - Add and remove nodes in celltree)的 CRUD 操作有关。

在我的例子中,我使用AsyncDataProvider 填充 CellTree 的节点。 使用RequestFactory 服务按需获取节点。

给定一个选择,我想添加子节点,删除/更新当前选择。在我看来,GWT TreeViewModel 接口太基础了。

根据我目前的理解,要走的路是使用 DataProviders 的映射,保留远程调用返回的基础列表的引用,并可能引用父 NodeInfo 对象。

例如,要删除当前选择,我可能会执行以下操作:

TreeViewModel model = cellTree.getTreeViewModel();
TreeViewModel.NodeInfo nodeInfo = model.getNodeInfo(selectionFromChangeListener);
CustomNodeInfo parent = ((CustomNodeInfo) nodeInfo).getParent();
parent.getUnderLyingNodeListFromDataProvider().remove(selectionFromChangeListener);
// maybe force refresh using dataProvider???
parent.getDataProvider().refreshDisplayAsInRepopulateData()

有更好的建议吗?看起来这将是一项具有挑战性的任务,除非我弄错了……不过这似乎有点矫枉过正。在 Swing 中很容易实现,甚至在大多数其他提供 Tree 小部件的 Web 框架中也是如此。

使用默认的Tree 小部件并用“正在加载”图像替换我自己的图标会更直接吗?看起来基本 Tree 允许对节点进行更多操作,例如 TreeItems

【问题讨论】:

    标签: gwt


    【解决方案1】:

    CellTree 小部件似乎是基于FastTree 的原始代码。

    FastTree 已经或多或少有我需要的东西,没有像 Swing 中的某种 setUserObject 方法DefaultMutableTreeNode

    对于旋转图标,过去有人already investigated它。

    我想现在,我将从 CellTree 切换到 FastTree 和 FastTreeItem 的定制版本。

    开箱即用的能力有getParentItem,remove(当前节点或特定子节点)等方法?非常感谢楼主...

    【讨论】:

    • 切换到 FastTree 解决了我的问题。我最终实现了自己,在自定义 FastTreeItem 上实现了 userObject 的概念。我也创建了自己的 IDataProvider 概念。从基本操作到使用远程调用的更复杂的东西,一切都很好......远程调用的关键是理想地提供初始子计数,以便显示适当的展开/折叠图标。在我见过的大多数 FastTree 和 FastTreeItems 的定制中,整个树都是懒惰地填充的,但同时递归地填充。在我的例子中,每个节点仅通过 RequestFactory 调用按需填充。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多