Существует ли контейнер списка Dojo, который автоматически сортирует дочерние виджеты?

Мне нужен графический контейнер, в который я могу добавлять и удалять свои пользовательские виджеты, где я могу установить функцию сортировки, которая автоматически применяется при выполнении этих операций.

В Додзё уже есть подходящий объект, который я пропустил? Или, может быть, я не думаю о проблеме правильно?

Если нет, то есть ли примеры и т. Д. Минимально работающего пользовательского контейнерного виджета?

2 ответа

Решение

Не думаю, что на самом деле - как бы знать, как функционал сортировки стандартного компонента знает, с какими параметрами он должен взвешивать порядок, когда контейнеры могут содержать любой тип виджета?

Использование расширения виджета макета будет вашим лучшим вариантом 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.

Используйте SitePen's dgrid, затем определите виджет List со столбцом типа Editor. Отправьте свой пользовательский виджет в параметр редактора. Виджет "Список" dgrid должен иметь возможность сортировки, как если бы он был сеткой на основе ваших данных, а столбец "Редактор" должен отображать все, что вы хотите, как часть содержимого элемента списка.

Если тебе что-нибудь понадобится, я буду рядом. Удача,

Другие вопросы по тегам