1

我想要一个图形容器,我可以在其中添加和删除我的自定义小部件,我可以在其中设置在这些操作发生时自动应用的排序功能。

Dojo 中是否已经有我错过的合适对象?或者也许我没有正确考虑这个问题?

如果没有,是否有任何最小工作自定义容器小部件的示例等?

4

2 回答 2

1

不要认为真的存在 - 标准组件的排序功能如何知道,它应该使用哪些参数来加权顺序,容器何时可以包含任何小部件类型?

恕我直言,使用布局小部件扩展将是您的最佳选择。他们每个人都有一个添加孩子的功能,遵循这个原型:

addChild(/*Object*/ dijit, /*Integer?*/ insertIndex)

是一个很好的dijit.layout.StackContainer起点,它继承自dijit._Container(and dijit.layout._LayoutWidget)。因此,您可以选择何时调用覆盖的扩展功能。

dojo.declare("my.Container", [dijit._Container], {
    getSortOrder : function(newDijit) {
         var newIndex = -1; ??
         // something to work with
         var currentChildren = this.getChildren();
         var currentDescendants = this.getDescendants();
         return newIndex;
    },
    addChild: function(dijit, index) {
           // figure out index
           arguments[1] = this.getSortOrder(dijit);
           this.inherited(arguments);
    }
});

但请注意,layoutwidgets 比选择顺序更重要,也像边界容器的区域参数一样定位。

于 2012-09-13T05:26:39.260 回答
1

使用 SitePen 的dgrid,然后使用类型为 Editor 的列定义一个 List 小部件。将您的自定义小部件发送到编辑器的参数。dgrid 的 List 小部件应该能够像基于您的数据的网格一样进行排序,并且 Editor 列应该能够显示您想要的任何内容作为 List 项目内容的一部分。

如果你需要什么我会在附近。运气,

于 2012-09-13T21:28:01.310 回答