是否有自动对子窗口小部件进行排序的Dojo列表容器?

时间:2012-09-12 15:03:52

标签: list containers dojo sorted

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

Dojo中是否有合适的物品我错过了?或者也许我没有正确地考虑这个问题?

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

2 个答案:

答案 0 :(得分:1)

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

使用布局小部件扩展程序将是您最好的选择imho。它们每个都有一个添加孩子的功能,遵循这个原型:

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

dijit.layout.StackContainer是一个很好的起点,它继承自dijit._Container(和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有更多选择顺序,也可以像bordercontainer的region参数一样定位。

答案 1 :(得分:1)

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

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