Вопрос

Всем доброго времени суток!

Стоит задача настройки сортировки очереди не по существующему приоритету, а по числовому - http://prntscr.com/mf7dc3
Подскажите в какой схеме происходит сортировка что бы поправить на кастомную.
Заранее благодарен.

У меня такой же вопрос

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

Галка «Сортировать по приоритету» добавляется в схеме страницы QueueItemSection:

{
	"operation": "insert",
	"name": "AgentViewMode",
	"parentName": "LeftGridUtilsContainer",
	"index": 0,
	"propertyName": "items",
	"values": {
		"checked": {"bindTo": "UseAgentViewSorting"},
		"visible": {"bindTo": "getAreFixedFilterCheckboxesVisible"},
		"caption": {"bindTo": "Resources.Strings.AgentViewCheckboxCaption"},
		"labelButtonClick": {"bindTo": "onUseAgentViewLabelButtonClick"},
		"generator": "QueueItemSectionViewHelper.getFixedFilterCheckboxGenerator"
	}
},

Её значение UseAgentViewSorting учитывает логика:

/**
 * @inheritdoc Terrasoft.GridUtilities#initQueryColumns
 * @overridden
 */
initQueryColumns: function(esq) {
	this.mixins.GridUtilities.initQueryColumns.apply(this, arguments);
	if (this.get("UseAgentViewSorting")) {
		this.addQueueSortColumns(esq, this.get("QueueColumnsSortConfig"));
	}
},
 
/**
 * @inheritdoc Terrasoft.GridUtilities#initQuerySorting
 * @overridden
 */
initQuerySorting: function(esq) {
	this.mixins.GridUtilities.initQuerySorting.apply(this, arguments);
	if (this.get("UseAgentViewSorting")) {
		this.initQueueQuerySorting(esq, this.get("QueueColumnsSortConfig"));
	}
},

QueueColumnsSortConfig берётся:

/**
 * Initializes sorting options.
 * @param {Function} callback The callback function.
 * @protected
 */
initQueueSortingConfig: function(callback) {
	this.queryColumnsSortConfig({
		callback: function(sortConfig) {
			this.set("QueueColumnsSortConfig", sortConfig);
			callback();
		}.bind(this)
	});
},

А вот и сортировка, но по имени:

/**
 * @inheritdoc Terrasoft.QueueSortUtilities#getInitialQueueSortConfig
 * @overridden
 */
getInitialQueueSortConfig: function() {
	var sortConfig = this.mixins.QueueSortUtilities.getInitialQueueSortConfig.apply(this, arguments);
	sortConfig.push({
		"name": "Queue.QueueEntitySchema.Name",
		"orderPosition": 4,
		"orderDirection": Terrasoft.OrderDirection.ASC
	});
	return sortConfig;
},

Логика включения-выключения галки:

/**
 * Handles Agent view Label 'click' event.
 * @protected
 */
onUseAgentViewLabelButtonClick: function() {
	this.set("UseAgentViewSorting", !this.get("UseAgentViewSorting"));
},
 
/**
 * Handles UseAgentView attribute value changed.
 * @param {Backbone.Model} model The model.
 * @param {Boolean} useAgentView The new attribute value.
 */
onUseAgentViewChanged: function(model, useAgentView) {
	if (useAgentView) {
		this.set("SortColumnIndex", -1);
		this.reloadGridData();
	}
	this.set("IsSortMenuVisible", !useAgentView);
	this.saveCheckboxAttributeInProfile("UseAgentViewSorting", useAgentView);
},

 

Зверев Александр,

Благодарю. В целом помогло.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день. Не удается отсортировать справочное поле следующим образом:

"lookupListConfig": {
                    columns: ["Number"],
                    orders: [
                        {
                            columnPath: "Number",
                            direction: Terrasoft.OrderDirection.ASC
                        }
                    ]
                },

У меня такой же вопрос

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

скорее всего Number просто текстовое поле, поэтому сортировка происходит некорректно

Здравствуйте, Павел!

Реализовать сортировку справочного поля можно следующим образом:

"название колонки страницы": {
    dataValueType: Terrasoft.DataValueType.LOOKUP,
        lookupListConfig: {
            orders: [
                  { 
                        columnPath: "колонка справочника, которая сортируется", 
                        direction: Terrasoft.OrderDirection.ASC 
                  }
            ]
        } 
    }

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день Коллеги!

Появилась необходимость реализовать отдельную сортировку по умолчанию в Grid'е детали.

Итак немного отсылки о детали. Деталь содержит в себе записи относящиеся к справочной колонке "Объект администрирования". Грубо говоря есть 4ре отдела и есть неограниченное количество пользователей, которые так или иначе входят в эти отделы (отдел - организационный юнит).

Так вот при клике на + у детали всплывает справочник этих сущностей, где пользователь может выбрать как отделы так и других пользователей. 

После этого происходит стандартное добавление выбранных записей в деталь.

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

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

Так же что-то удалось найти в diff на BaseGridDetail который соответствует сортировке, но как-то это тоже ни к чему не привело.

Есть мысль что при загрузке коллекции в методе onGridDataLoaded получать коллекцию и при помощи underscore.js сортировать её как угодно, но вроде как это накладно и производительней было бы получить уже отсортированную коллекцию.

У кого какие предложения/идеи будут по данному посту?

У меня такой же вопрос

7 комментариев

Добрый день. Не очень понял, а почему "я уперся в GridUtilites и решил дальше не лезть"? Можно же функцию из миксина переопределить в схеме самой детали, сославшись на родительскую, если нужно, через this.mixins.GridUtilitiesV2.... . На вскидку, вроде надо "допилить" initQuerySorting ???

типа такого:

 

initQuerySorting: function(esq) {

    this.mixins.GridUtilitiesV2.initQuerySorting(esq);

    /* далее какие-то ваши действия с esq */

}

 

Или наоборот, сначала - ваша сортировка, потом - родительский метод.

Иванов Александр А.,

Да, спасибо. Мы уже разрешили проблему. Если интересно могу поделиться кодом.

Да, было бы неплохо. Посмотреть, к тому же, насколько отличается от моей мысли. ))

initQuerySorting: function(esq) {
	var createdOnColumn = esq.addColumn("KmName", "Name");
	createdOnColumn.orderDirection = this.Terrasoft.OrderDirection.ASC;
}

Всё свелось к тому что такой путь посоветовала Тех. поддержка. А у меня там уже простынка такая строчек на 100 была как коллекцию грида сортироватьlaugh

Кисловский Михаил Андреевич,

Ну да, только тут остальная сортировка "идёт лесом". Поддержка, как всегда, короче... smiley

Иванов Александр А.,

Ну с остальной сортировкой да. Но в целом можно выкрутиться думаю если захотеть) 

Я, наверное, тогда промолчу про 

getGridDataColumns: function() {
	return {
		"Id": {path: "Id"},
		"TmName": {path: "TmName"},
		"TmStartDate": {path: "TmStartDate", orderPosition: 0, orderDirection: Terrasoft.OrderDirection.DESC},
		"TmStudios": {path: "TmStudios", orderPosition: 1, orderDirection: Terrasoft.OrderDirection.DESC}
	};
},

где можно сортировку по каждой колонке настроить...

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

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

Пытаюсь реализовать сортировку справочного поля типа ENUM.

attributes: {
			"LeadType": {"isRequired": false},
			"Stage": {
				"lookupListConfig": {
					"filters": [
						function() {
							var filterGroup = Ext.create("Terrasoft.FilterGroup"), {
								sortProperty: "Number"
							});
							filterGroup.add("ActiveStage",
								Terrasoft.createColumnFilterWithParameter(
									Terrasoft.ComparisonType.EQUAL,
										"UsrShowInMiniPage", "1"));
							filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
							filterGroup.add("Sort",
								Terrasoft.createColumnFilterWithParameter(
									Terrasoft.ComparisonType.GREATER_OR_EQUAL,
										"Number", "0"));
							return filterGroup;
							
						}
					]
				}
			}
		},

Предположил, что sortProperty не срабатывает из-за отсутствия такой колонке в запросе, поэтому добавил еще одно условие, как все-таки правильно это сделать?

У меня такой же вопрос

5 комментариев

А если вот так?

"Stage": {
	"lookupListConfig": {
		"filters": [
			function() {
				var filterGroup = Ext.create("Terrasoft.FilterGroup"), {
					sortProperty: "Number"
				});
				filterGroup.add("ActiveStage",
					Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL,
							"UsrShowInMiniPage", "1"));
				filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
				filterGroup.add("Sort",
					Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.GREATER_OR_EQUAL,
							"Number", "0"));
				return filterGroup;
 
			}
		],
		"columns": ["Number"]
	}
}

 

Добрый день.

Добавьте свойство orders в lookupListConfig. К примеру:

"Owner": {
    lookupListConfig: {
        columns: ["Name"],
        orders: [
            {
                columnPath: "Name",
                direction: Terrasoft.OrderDirection.DESC
            }
        ]
    }
},

Терещук Сергей,

Сортировка таким образом не работает. Ни при указании колонки "Name", ни при какой-либо другой колонки. Direction также не влияет на порядок отображения

Варфоломеев Данила,

Сортировка также не работает, тем не менее, колонка "Number" добавляется в ответ от сервера

del

 

Войдите или зарегистрируйтесь, чтобы комментировать
Идея
Доброго времени суток.Просьба на сайте добавить возможность сортировать "Идеи" и "Блоги" по проставленным лайкам / дате создания / популярности (кол-во комментов).
Обсуждение
7 комментариев

А еще отменить возможность ставить лайки анонимным пользователям и наконец то разделить все разделы по платформам 3.Х, 5.Х и 7.Х :smile:

"Александр Свистунов" написал:А еще отменить возможность ставить лайки анонимным пользователям

И правда можно же, эх накручу :cool:

"Александр Кудряшов" написал:эх накручу

Говорят, 99,9% мыслей уже кому то приходили в голову: 1, 2.
Однажды я сам удивился такой популярности, не знаю кому это надо было:smile: - 3

Понятно, что такого разрыва быть не может.

"Александр Свистунов" написал:Понятно, что такого разрыва быть не может
Ничего себе там голосов :)

"Александр Кудряшов" написал:Ничего себе там голосов :)

накручивают

У меня еще один крик души. Статус Идеи. Почему-то все рассматриваются. Причём, годами. Причём, некоторые уже реализовали, но еще рассматривают. А некоторые никогда не реализуют, но еще рассматривают.

Инициативу лучше всего убивать равнодушием..

"Владимир Соколов" написал:

У меня еще один крик души. Статус Идеи. Почему-то все рассматриваются. Причём, годами. Причём, некоторые уже реализовали, но еще рассматривают. А некоторые никогда не реализуют, но еще рассматривают.

Инициативу лучше всего убивать равнодушием..


Крутая идея

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!
Столкнулся с такой проблемой:
В элементе чтение данных процесса необходимо выбрать последнюю запись по дате(Дата окончания подписки).
Эксперименты с галкой "читать первые при указанной сортировке" и указание различных порядков по сортировке показали, что результат независимо от настроек всегда такой же как и без сортировки.
Вопрос: как все таки установить сортировку по убыванию?
Версия 7.2.0.942

У меня такой же вопрос

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

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу

Здравствуйте, Иван.
Данная проблема действительно присутствует в данной сборке. Ошибка исправлена в более старших версиях приложения. Для исправления ошибки в Вашей версии приложения Вам необходимо в разделе "Конфигурация" открыть метаданные, вкладку "Пакет разницы" схемы "ReadDataUserTask" и вставить в нее код вложенного документа readdatausertask.txt затем выполнить сохранение метаданных и компиляцую измененного.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Есть поле LookupDataControl, которое в датасете установлено как выпадающий список (галочка "Отображать как выпадающий список в карточках")

При отображении значений в карточке они появляются в произвольном порядке.
Т.е. сортировка указанная в SelectQuery не учитывается.

В профайлере тоже отображает выборку из базы без указания сортировки.

Terrasoft 3.4.1.106

У меня такой же вопрос

1 комментарий

Виктор, добрый день!

По умолчанию LookupDataControl с включенным simple select не использует ORDER BY.

Но можно добавить: для контрола в функции OnPrepareSelectWindow пропишите:

var Dataset = LookupDataControl.DataField.LookupDataset;
Dataset.DataFields.ItemsByName('Name').OrderType = otDesc;

либо otAsc.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Например, при выборе города требуется отобразить не только колонку "Название", но и колонку "Страна", а также отсортировать сначала по стране, а потом по названию.
Как правильно это сделать в 7-ке?
Сейчас обычно список содержит одну колонку с первичным полем для отображения.

У меня такой же вопрос

5 комментариев

Валерий,

Теоретически, можно полностью переопределить LookupPage, чтобы при выборе из объекта городов, в реестре отображались две колонки.
В 7.2 настройка колонок, в карточке выбора из справочника, реализована пользовательски, возможно, есть смысл дождаться релиза новой версии.

Смысл, может, и есть :smile:, но:
- когда планируется релиз новой версии?
- насколько просто будет перенести из 7.1 свои настройки - достаточно ли будет сохранить и загрузить новые и замещенные схемы?

Валерий, обращался к коллегам из департамента разработки. Релиз планируется выпустить в ближайшее время, январь-февраль. И заодно попросил рекомендаций о том, как реализовать карточку выбора из справочника с несколькими колонками и получил ответ, что с текущим ядром (7.1) - никак.

Максим, спасибо!
Подождем... А если "припечет", попробуем заместить LookupPage :smile:

От вывода нескольких колонок пока отказались, а с сортировкой оказалось просто - добавили в заменяющей схеме страницы такой код:

	var City = this.find('City');
	if (City) {
		City.orders = [{
			columnPath: 'Country'
		}, {
			columnPath: 'Name'
		}];
	}
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

"Внезапно" (как это часто бывает) обнаружилось, что элементы базы требующие отображения в отсортированном виде отображаются не так как хотелось бы пользователям.

Дело всё в том, что когда пользователь, например, вводит какие-нибудь товары, в названии которых есть и буквенная часть и числовая (представляющая порядковый номер)

ручка
резинка
ножницы
карандаш красный №1
карандаш красный №2
карандаш красный №3
...
карандаш красный №9
карандаш красный №10

и этот пользователь хочет отсортировать продукты по алфавиту, то он получит:

карандаш красный №1
карандаш красный №10

карандаш красный №2
карандаш красный №3
...
карандаш красный №9
ножницы
резинка
ручка

И вот тут на примере карандашей видим проблему:
После номера 1 идёт 10, а не 2 так как сравниваются коды символов стоящих под соответствующими номерами,
Так как поле текстовое, то другой сортировки ожидать и не приходится

Суть вопроса: есть-ли шанс переписать механизмы сортировки, так, чтобы текстовое поле парсилось на наличие цифр, или сортировка идёт в ядре, "куда простым смертным путь заказан"?

У меня такой же вопрос

6 комментариев

Можно создать в SelectQuery колонку типа "SQL Text" и там написать произвольную формулу или вызов SQL-функции, оперирующие значением другой колонки. Потом создать колонку в Dataset-е. И сортировать по ней.

"Зверев Александр" написал:произвольную формулу или вызов SQL-функции

что-то типа

select cast( 
	substring(YOUR_Field, PATINDEX('%№%', YOUR_Field), 2)
	as int)

"Андросов Дмитрий" написал:что-то типа

Мне кажется, автору темы этого будет недостаточно. Ведь "карандаш красный №1" должен быть ниже, чем "карандаш зелёный №2". Тут надо делить строку на буквы и цифры, цифры дополнять слева нулями до одинаковой длины и соединять обратно.

Всем спасибо за советы! Займусь реализацией, как будет возможность и отпишусь по результатам

"Зверев Александр" написал:
Мне кажется, автору темы этого будет недостаточно. Ведь "карандаш красный №1" должен быть ниже, чем "карандаш зелёный №2". Тут надо делить строку на буквы и цифры, цифры дополнять слева нулями до одинаковой длины и соединять обратно.

да, был невнимателен)
в таком случае лучше поле писать на клиенте (в террасофт, а не в БД) на стадии insert\update, а не выбирать в запросе

брать числа после "№" и дописывать их нулями до одинаковой длины.

Но, это не панацея - что если пользователь напишет номер после "#" или вообще просто так "карандаш 2"? тогда, конечно, можно регэкспами решить, но что, если он напишет карандаш версия 2 зеленый №3? т.е. "версия 2" обрабатывать не надо, а "№3" надо...

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

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Недавно, не побоюсь этого слова, столкнулся с пожеланием клиента жестко сортировать записи в гриде по двум полям дат - в первую очередь по одной (приезд), потом по другой (отъезд). Персонал долго и плотно сидел на экселе, так что желание было вполне понятно.
Сначала показалось, что никаких проблем с этим не может возникнуть, но как выяснилось, без тех поддержки обойтись не удалось :confused:.
Первая мысль была - взять да отсортировать датасет в настройках SelectQuery, благо там есть прекрасная возможность настройки сортировки хоть по всем полям сразу. Что и было сделано.

Однако, результата это не дало - все осталось удивительно так же, как и было :smile:
Безуспешно пошаманив над запросом, я переключился на настройки грида.

Однако :exclaim:, вопреки ожиданиям... все осталось еще более удивительно так же, как и было :smile:
Убив довольно много времени на вариации настроек и чесание затылка, я решил наконец посмотреть что-же там в запросе, собственно, запрашивается...

Как и следовало ожидать никаких мной настроенных сортировок там не было. Профайлер показывал следующее:

exec sp_executesql N'SELECT TOP 40
/*№1*/     [tbl_Opportunity].[ID] AS [ID],
                [tbl_Opportunity].[CustomerID] AS [CustomerID],
                [tbl_Account].[Name] AS [CustomerName],
                [tbl_Opportunity].[Probability] AS [Probability],
                CAST(CONVERT(VARCHAR(8), [tbl_Opportunity].[ActualCloseDate], 112) AS DATETIME) AS [ActualCloseDate],
                [tbl_Opportunity].[TypeID] AS [TypeID],
                [tbl_Opportunity].[StatusID] AS [StatusID],
                [tbl_Opportunity].[CreatedOn] AS [CreatedOn],
                [tbl_Opportunity].[CreatedByID] AS [CreatedByID],
                [CreatedBy].[Name] AS [CreatedByName],
                [tbl_Opportunity].[WorkflowItemID] AS [WorkflowItemID],
                [tbl_OpportunityStatus].[IsFinish] AS [IsFinish],
                [tbl_Opportunity].[Revenue] AS [Revenue],
/*№14*/   CAST(CONVERT(VARCHAR(8), [tbl_Opportunity].[DateArrival], 112) AS DATETIME) AS [DateArrival],
                CAST(CONVERT(VARCHAR(8), [tbl_Opportunity].[DateDeparture], 112) AS DATETIME) AS [DateDeparture],
                [tbl_Opportunity].[MemberQuantity] AS [MemberQuantity],
                [tbl_Opportunity].[PlaceArrival] AS [PlaceArrival],
                [tbl_Opportunity].[PlaceDeparture] AS [PlaceDeparture],
                [tbl_Opportunity].[WaterType] AS [WaterType],
                [tbl_Opportunity].[BusType] AS [BusType],
                [tbl_Opportunity].[Additionally] AS [Additionally],
                [tbl_Opportunity].[TourGuidesFIO] AS [TourGuidesFIO],
                [tbl_Opportunity].[TourHotelReserves] AS [TourHotelReserves],
                [tbl_Opportunity].[TourCreditSum] AS [TourCreditSum],
                [tbl_Opportunity].[Profit] AS [Profit]
FROM
                [dbo].[tbl_Opportunity] AS [tbl_Opportunity]
LEFT OUTER JOIN
                [dbo].[tbl_Account] AS [tbl_Account] ON [tbl_Account].[ID] = [tbl_Opportunity].[CustomerID]
LEFT OUTER JOIN
                [dbo].[tbl_OpportunityStatus] AS [tbl_OpportunityStatus] ON [tbl_OpportunityStatus].[ID] = [tbl_Opportunity].[StatusID]
LEFT OUTER JOIN
                [dbo].[tbl_Contact] AS [CreatedBy] ON [CreatedBy].[ID] = [tbl_Opportunity].[CreatedByID]
WHERE(((([tbl_Opportunity].[DateArrival] >= @P1 OR
                [tbl_Opportunity].[DateDeparture] >= @P2) AND
                ([tbl_Opportunity].[DateArrival]                 [tbl_Opportunity].[DateDeparture] ORDER BY
                14 ASC,
                1 ASC'
,N'@P1 datetime2(7),@P2 datetime2(7),@P3 datetime2(7),@P4 datetime2(7)','2013-04-01 00:00:00','2013-04-01 00:00:00','2013-05-01 00:00:00','2013-05-01 00:00:00'

Вот это меня убило: 1 ASC
Вторая сортировка - это сортировка пользователя по колонке (кликом)
Никаких настроенных сортировок и в помине...

На всякий случай просмотрев разные варианты профайлером, я начал сомневаться, что занимаю свое место... и написал-таки в техподдержку.
Ответ немного удивил, но было уже не важно :redface:

Цитата:
Сортировка реестра работает следующим образом:
по умолчанию устанавливается сортировка по полю ID. Если пользователь применил сортировку по колонке реестра - к сортировке по ID добавляется сортировка по данной колонке.
Установленная для колонок сортировка в запросе при открытии датасета реестра снимается и не учитывается.
Чтобы накладывать сортировку на нужные Вам колонки, необходимо:
1. Перед открытием датасета реестра программно устанавливать сортировку.
2. Скриптом сортировка устанавливается таким образом:

Dataset.DataFields.ItemsByName(DataFieldName).OrderType = otAsc;
Dataset.DataFields.ItemsByName(DataFieldName).OrderPosition = 1;

Где константа otAsc – определяет сортировку по возрастанию, а otDesc – сортировку по убыванию.

Сделал, как написано - и ура, оно заработало, но с одним "но" - возможность сортировать по столбцам (кликом) теперь какая-то странная такая возможность:
при открытии

ORDER BY
        18 ASC,
        19 ASC,
        1 ASC'

при сортировке по полю №27

ORDER BY
        18 ASC,
        19 ASC,
        27 ASC,
        1 ASC

при сортировке по полю №4

ORDER BY
        18 ASC,
        4 ASC,
        19 ASC,
        1 ASC'

Я тогда не стал дальше разбираться, т.к. и так много времени на это потратил, поэтому спрошу здесь:
- работают ли настройки сортировки в сервисе грида и, если да, то как их использовать?
- зачем-зачем-зачем сортировка в датасете сбрасывается на сортировку по ID?

ПС. Если создавать датасет так:

var Dataset = SelectQuery.Open();

то сортировка точно работает, скорее всего сбрасывание происходит где-то на связке грида с датасетом

Поделиться

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

Добрый день, Дмитрий.

1. OrderPosition - 0 = не сортировать. Выставляйте позиции с 1-цы в настройках грида и будет сортировать.
2. Уточним.

Новости?:smile:

"Maxim Gritsenko" написал:
1. OrderPosition - 0 = не сортировать. Выставляйте позиции с 1-цы в настройках грида и будет сортировать.

---речь о 3.4.0.164---

Сортировать будет, но есть нюансы:
- если у DataGrid установлено CanChangeSort - true, пользователь может поменять сортировку - и она такой и останется (в профайлдата)
- если у DataGrid установлено CanChangeSort - false и очищены настройки пользователя, пользователь не может поменять сортировку, но и она не работает)
- если у DataGrid установлено CanChangeSort - false и НЕ очищены настройки пользователя, пользователь сортировку менять не может, а сама сортировка остается такой, какой была в последний раз.
Кроме того, CanChangeSort относится сразу ко всем представлениям (DataGridView), что не очень удобно.

ПС. Я наверно, опять не прочитал мануал, но оказывается можно сортировать по нескольким\многим колонкам - через Shift. В нашем случае, правда, это не выход - почему-то считается, что не надо оставлять это на пользователя (т.к. настройки гридов сохраняются в настройках пользователя, и, поменяв, он может не вспомнить, как вернуть назад)

Войдите или зарегистрируйтесь, чтобы комментировать