Коллеги всем доброго времени суток!
Кто нибудь сталкивался с сортировкой значений справочника в выпадающем списке.

Например: Есть справочники Tarifs в нем есть поле Position. И в зависимости от значения Position (1,2,3...)нужно сортировать выпадающий список.

Нравится

2 комментария

Это можно сделать при формировании запроса EntitySchemaQuery.

var sortPosition = esq.addColumn("Position");

sortPosition.orderDirection = Terrasoft.OrderDirection.ASC;

Я не уверен, что правильно понял кейс, но у меня, например, есть справочное поле "Рейтинг заявки", где значения от 1 до 10. И десятка идет сразу после единицы, так как оно сортируется как текст. Я на пейдже заявки создал атрибут, где указал сортировку по нужному мне целочисленному полю UsrNumber, которое я чуть ранее добавил в этот справочник.

"UsrRate": {
    lookupListConfig: {
	    orders: [
			{
			    columnPath: "UsrNumber", 
				direction: Terrasoft.OrderDirection.ASC
			}
		]
	}
}

 

Показать все комментарии

Здравствуйте.

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

Нашел в сообществе:

getGridDataColumns: function() {
        var columnsConfig = this.callParent(arguments);
        columnsConfig.NumberDecimal = {
                path: "NumberDecimal",
                orderPosition: 10,
                orderDirection: 1
        };
        return columnsConfig;
}

Но это не работает.

Нравится

4 комментария

Добрый день.
Попробуйте:

/**
 * Возвращает колонки, которые всегда выбираются запросом.
 * @protected
 * @overridden
 * @return {Object} Возвращает массив объектов-конфигураций колонок.
 */
getGridDataColumns: function() {
	var baseGridDataColumns = this.callParent(arguments);
	var gridDataColumns = {
		"SmrNumber": {path: "SmrNumber"}
	};
	return Ext.apply(baseGridDataColumns, gridDataColumns);
},
/**
 * Инициализирует колонки сортировки.
 * @protected
 * @overridden
 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в который будут инициализорованы опции сортировки.
 */
initQuerySorting: function(esq) {
	var sortedColumn = esq.columns.collection.get("SmrNumber");
	if (sortedColumn) {
		sortedColumn.orderPosition = 0;
		sortedColumn.orderDirection = this.Terrasoft.OrderDirection.DESC;
	}
}

Здравствуйте, Дмитрий.
Спасибо. Это то что нужно.

Здравствуйте, подскажите, как отфильтровать по колонке связанного справочника?
Например, есть деталь, в ней справочное поле, а в справочнике целочисленное поле.
Деталь UsrPrimaryContact, справочное поле UsrRelationType поле UsrOrder. Т.е. нужно отсортировать по UsrRelationType.UsrOrder

Уже разобрался. Спасибо за хороший пример.

 /**
                 * Возвращает колонки, которые всегда выбираются запросом.
                 * @protected
                 * @overridden
                 * @return {Object} Возвращает массив объектов-конфигураций колонок.
                 */
                getGridDataColumns: function () {
                    var baseGridDataColumns = this.callParent(arguments);
                    var gridDataColumns = {
                    	"UsrRelationshipType": {path: "UsrRelationshipType"},
                        "UsrRelationshipType.UsrOrder": {path: "UsrRelationshipType.UsrOrder"}
                    };
                    return Ext.apply(baseGridDataColumns, gridDataColumns);
                },
                /**
                 * Инициализирует колонки сортировки.
                 * @protected
                 * @overridden
                 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в который будут инициализорованы опции сортировки.
                 */
                initQuerySorting: function (esq) {
                    debugger;
                    var sortedColumn = esq.columns.collection.get("UsrRelationshipType.UsrOrder");
                    if (sortedColumn) {
                        sortedColumn.orderPosition = 0;
                        sortedColumn.orderDirection = this.Terrasoft.OrderDirection.ASC;
                    }
                },
Показать все комментарии