Появилась задача скрыть из раздела вью грида со списком по условию (условие на основании доступа по операциям). Подскажите, как можно это сделать?

Изображение удалено.

Нравится

3 комментария
Лучший ответ

Решение нашел такое, во разделе в Section (например OpportunitySectionV2):

 

methods: {
	getActiveViewName: function() {
		//let activeViewName = this.get("GridDataViewName"); // это прописанная вью по умолчанию, это наш грид (таблица)
		let activeViewName = this.get("AnalyticsDataViewName"); // Заменяем на вью с аналитикой
		const dataViews = this.get("DataViews");
		if (dataViews) {
			dataViews.each(function(dataView) {
				if (dataView.active) {
					activeViewName = dataView.name;
				}
			}, this);
		}
		return activeViewName;
	},
	getDefaultDataViews: function() {
		var dataView = this.callParent(); // получаем стандартный список вьюшек
		delete dataView.GridDataView; // Удаляем из списка GridDataView - грид (таблицу) что бы оно исчесло из раздела
		return dataView; // возвращаем список уже без вью которую убоали из списка
	}
}

 

В BaseDataView есть функция initDataViews, в BaseSectionV2 есть функция getDefaultDataViews.

Полозюков Евгений Петрович, GridDataView прописана как вью по умолчанию, потому исключение из getDefaultDataViews  вызовет ошибку

Решение нашел такое, во разделе в Section (например OpportunitySectionV2):

 

methods: {
	getActiveViewName: function() {
		//let activeViewName = this.get("GridDataViewName"); // это прописанная вью по умолчанию, это наш грид (таблица)
		let activeViewName = this.get("AnalyticsDataViewName"); // Заменяем на вью с аналитикой
		const dataViews = this.get("DataViews");
		if (dataViews) {
			dataViews.each(function(dataView) {
				if (dataView.active) {
					activeViewName = dataView.name;
				}
			}, this);
		}
		return activeViewName;
	},
	getDefaultDataViews: function() {
		var dataView = this.callParent(); // получаем стандартный список вьюшек
		delete dataView.GridDataView; // Удаляем из списка GridDataView - грид (таблицу) что бы оно исчесло из раздела
		return dataView; // возвращаем список уже без вью которую убоали из списка
	}
}

 

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

Как обновить эту часть через js после нажатия на кнопку выбора?

Изображение удалено.

Изображение удалено.

 

 

Есть такой код, фильтрация добавляется нормально, данные обновляются только после использования любого другого фильтра(по типу "Ответственного").

stageFilterCallBack : function(args) {
    this.selectedRows = args.selectedRows.getItems();
    var selectdIds = [];
 
    this.selectedRows.forEach(function(item) {
      selectdIds.push(item.value);
    }, this);
 
    this.set("CurrentStageFiltersSelectedItems", selectdIds);
 
	const filters = this.get("SectionFilters");
    var filialFilter = this.Terrasoft.createColumnInFilterWithParameters("Stage.Id", selectdIds);
    filialFilter.comparisonType = this.Terrasoft.ComparisonType.EQUAL;
 
    filters.removeByKey("stageFilter");
    filters.add("stageFilter", filialFilter);
 
    this.updateDetail(
    {
	  detail: "UsrSchema4Detailf84a3cb6",
      reloadAll: true
    }
  );
}

 

Нравится

1 комментарий
Лучший ответ

Для обновления реестра следует использовать метод

this.reloadGridData();

updateDetail работает только для деталей

Для обновления реестра следует использовать метод

this.reloadGridData();

updateDetail работает только для деталей

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

Добрый день!

Добавил кнопки в DataGrid, но они выбиваются из общего стиля, как это можно исправить?



Код с добавлением кнопки в DataGrid

diff: [{

                    operation: "merge",

                    name: "DataGrid",

                    values: {

                        className: "Terrasoft.ConfigurationGrid",

                        generator: "ConfigurationGridGenerator.generatePartial",

                        generateControlsConfig: { bindTo: "generateActiveRowControlsConfig" },

                        changeRow: { bindTo: "changeRow" },

                        unSelectRow: { bindTo: "unSelectRow" },

                        onGridClick: { bindTo: "onGridClick" },                     

                        activeRowActions: [{

                                className: "Terrasoft.Button",

                                style:this.Terrasoft.controls.ButtonEnums.style.GREEN,

                                markerValue: "CallAction",

                                tag: "CallAction",

                                caption: "\u2706"

                        }],

                        initActiveRowKeyMap: { bindTo: "initActiveRowKeyMap" },

                        activeRowAction: { bindTo: "onActiveRowAction" }

                    }}]

Вот их отображение

Изображение удалено.

Нравится

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

Сергей, у оригинальных трёх кнопок стиль прозрачный и показывается заранее созданная картинка. См. в ProductDetailV2:

{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"generateControlsConfig": {bindTo: "generateActiveRowControlsConfig"},
		"multiSelect": {"bindTo": "MultiSelect"},
		"changeRow": {"bindTo": "changeRow"},
		"selectRow": {"bindTo": "createEditRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"activeRowActions": [
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "save",
				"markerValue": "save",
				"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "cancel",
				"markerValue": "cancel",
				"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "remove",
				"markerValue": "remove",
				"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
			}
		],
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
},

Сами картинки, видимо, из BaseConfigurationGridRow, где они добавлены в дизайнере в левом блоке.

Зверев Александр пишет:

Сергей, у оригинальных трёх кнопок стиль прозрачный и показывается заранее созданная картинка. См. в ProductDetailV2:


 
{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"generateControlsConfig": {bindTo: "generateActiveRowControlsConfig"},
		"multiSelect": {"bindTo": "MultiSelect"},
		"changeRow": {"bindTo": "changeRow"},
		"selectRow": {"bindTo": "createEditRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"activeRowActions": [
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "save",
				"markerValue": "save",
				"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "cancel",
				"markerValue": "cancel",
				"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "remove",
				"markerValue": "remove",
				"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
			}
		],
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
},

Сами картинки, видимо, из BaseConfigurationGridRow, где они добавлены в дизайнере в левом блоке.

 

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

На самом деле мой код выглядит так, просто я не добавил выше код базовых кнопок что бы показать суть проблемы :

...
activeRowActions: [{  
    // Моя кнопка,
    // Код кнопок из вашего ответа
}],
...

Если бы кнопка была не в гриде, тогда проблема со стилями не возникает, но такой вариант не подходит, так как мои кнопки находятся в activeRowActions

{
					operation: "insert",
					name: "InfoButton",
					parentName: "ActionButtonsContainer",
					propertyName: "items",
					values: {
						click: { bindTo: "onButtonClick"},
						itemType: this.Terrasoft.ViewItemType.BUTTON,
						style: this.Terrasoft.controls.ButtonEnums.style.GREEN,
						hint: { bindTo: "showHint" },
						caption: "\u29C9",
					},
				},

 

Нет никакого стиля базовых кнопок, это три картинки.

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

Здравствуйте. Есть задача, для разных ролей выводить разный набор колонок, для раздела. Нашёл метод "initializeProfile" в схеме "BaseSchemaViewModel", в котором проставляется значение переменной "Profile". Я добавляю свою колонку, но в итоге она не выводится в реестр, хотя например если зайти в настройку колонок реестра, то там видна моя добавленная колонка, тогда не понятно почему она не видна в реестре раздела. Как вообще правильно сделать эту таску?

initializeProfile: function(callback, scope) {
				this.requireProfile(function(profile) {
					var profileColumnName = this.getProfileColumnName();
					if (profile && profile.DataGrid && profile.DataGrid.tiledConfig) {
						var prifileDataGrid = JSON.parse(profile.DataGrid.tiledConfig);
						prifileDataGrid.items.pop();
						prifileDataGrid.items.push({
							"bindTo": "PlaceOfBirth",
							"caption": "Место рождения",
							"position": {
							  "column": 17,
							  "colSpan": 7,
							  "row": 2
							},
							"dataValueType": 1,
							"metaPath": "PlaceOfBirth",
							"path": "PlaceOfBirth",
							"captionConfig": {
							  "visible": true
							}
						});
						profile.DataGrid.tiledConfig = JSON.stringify(prifileDataGrid);
					}
					this.set(profileColumnName, profile);
					Ext.callback(callback, scope);
				}, this);
			}

 

Нравится

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

Александр, добрый день!

 

Реализовать вашу задачу можно добавив в таблицу SysProfileData записи с определёнными ключами и правильным содержанием ObjectData и переопределив метод получения Profile получать нужное содержание по сформированному ключу по вашему условию.

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

А вы не слишком заморочились? Не проще ли научить пользователей менять состав колонок? 

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

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

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

Приветы. Буду очень признателен за помощь.

Есть таблица с такими колонками: 

1. Поле типа справочник - x. 

2. Поле типа справочник - y.

3. Поле типа дата - d.

 

Результат: 

Таблица, грид, где первая колонка со значениями поля - x с соответствующим заголовком.

Другие заголовки колонок после заголовка x - значение полей d. А на пересечении x и d - значение справочника y. 

Как то так:

Изображение удалено.

 

Буду рад любой помощи, гайду или указанием примера в системе :)

Sales 7.16

Нравится

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

Андрей, с версии 7.16 систему как раз добавили функциональность сводных таблиц. Настраивается в итогах, блок «список».

specs_dashboards_chart_summary_table.png

Точно можно делать столбцы по разным значениям одного справочника, а строки — другого. Если возможности построить так, как Вы хотите с группировкой по датам, нет, то можно сделать специальное поле в объекте и заполнять его по дате одинаковым значением для каждых суток или месяца.

 

Если что-то не подойдёт, кроме стандартной функциональности есть ещё стороннее дополнение для сводных таблиц.

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

Фишка в том что бы это можно было редактировать :)

Тогда, наверное, так не получится. Разве что делать привязанное к этой таблице view с триггерами на изменение, реализующими сохранение в нужную запись таблицы, объект и деталь с редактируемым реестром по нему. Но это только для случая, если количество столбцов заранее известно и стабильно (например, дни одного месяца с 1 по 31, если в месяце меньше дней, как-то обработать).

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

Я нашел здесь обсуждение

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

Прошу прощения за глупый вопрос, но без этого не пройти вперед.

Я понимаю логику работы так. 

С разделом связан некоторый объект который обращается к таблице БД.

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

Теперь возвращаемся к обсуждению. Редко используемым полям советуют убрать свойство "Filtering Field" в DataGrid, но такого свойства в классе столбца EntitySchemaColumn нету. В дизайнере объекта через функцию "Исходный код" примера вызова свойства нет. 

  1. Есть ли моя ошибка в рассуждении?
  2. Как посоветуете сделать данную задачу?
  3. Есть ли актуальное обсуждение на данный момент?

Изображение удалено.

Нравится

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

То обсуждение относиться к версии 3.Х, которая с нынешней 7.Х не связана практически никак. Более актуальное обсуждение похожих вопросов было тут или тут. Скорее всего, нужно будет найти в коде место формирования списка колонок и для конкретного раздела внести туда дополнительную логику. См. в CustomFilterViewModelV2, похоже, это оно:

  function getSimpleFilterColumnList(filters, list) {
   list.clear();
   var columnList = {};
   var columnNames = [];
   var columns = this.entitySchema.columns;
   Terrasoft.each(columns, function(column) {
    if (column.dataValueType !== Terrasoft.DataValueType.GUID &&
     column.dataValueType !== Terrasoft.DataValueType.TIME &&
     column.dataValueType !== Terrasoft.DataValueType.BLOB &&
     column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP &&
     column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) {
     if (this.isColumnDeprecated(column)) {
      return;
     }
     columnNames.push({
      name: column.name,
      caption: column.caption
     });
    }
   }, this);
   var sortedColumnNames = columnNames.sort(function(a, b) {
    if (a.caption === b.caption) {
     return 0;
    } else {
     return a.caption > b.caption ? 1 : -1;
    }
   });
   Terrasoft.each(sortedColumnNames, function(item) {
    var column = columns[item.name];
    columnList[column.name] = {
     value: column.name,
     displayValue: column.caption,
     dataValueType: column.dataValueType,
     referenceSchemaName: column.referenceSchemaName
    };
   });
   list.loadAll(columnList);
  }

 

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

Добрый день. Такая ситуация, пользователь настраивает фильтр в разделе, и ему выдает например 900 записей, и эти 900 записей мне нужно передать в БП, но когда я получаю записи из грида (this.getGridData().collection), то мне выдает только прогруженные записи (например 30), можно ли как-то получить все отфильтрованные записи?

Нравится

1 комментарий
Лучший ответ

Добрый день!

Можете на клиенте в разделе получить текущий фильтр и по запросу вытащить нужные вам записи:

const filters = this.getFilters();
if (filters) {
	esq.filters.addItem(filters);
}

Но правильнее будет передать фильтр в бизнес процесс (в виде json), а в бизнес процессе получить уже список записей:

byte[] filterEditData = Encoding.UTF8.GetBytes(filter);
IEntitySchemaQueryFilterItem filters = CommonUtilities.ConvertClientFilterDataToEsqFilters(
                    _userConnection, filterEditData, new Guid(schemaUid));
            entitySchemaQuery.Filters.Add(filters);

 

Добрый день!

Можете на клиенте в разделе получить текущий фильтр и по запросу вытащить нужные вам записи:

const filters = this.getFilters();
if (filters) {
	esq.filters.addItem(filters);
}

Но правильнее будет передать фильтр в бизнес процесс (в виде json), а в бизнес процессе получить уже список записей:

byte[] filterEditData = Encoding.UTF8.GetBytes(filter);
IEntitySchemaQueryFilterItem filters = CommonUtilities.ConvertClientFilterDataToEsqFilters(
                    _userConnection, filterEditData, new Guid(schemaUid));
            entitySchemaQuery.Filters.Add(filters);

 

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

Доброго времени суток, коллеги.

ТеррасофтCRM 3.3.2.245.

Возможно ли в DataGrid-е запретить отображение панели итогов? В противном случае при выборке в SelectQuery из табличной функции и включенных итогах в гриде выдается ошибка: "Функции SUM необходимо 1 аргументов". Я пока программно устанавливаю свойство IsSummaryVisible грида в false, но может есть более цивильный способ?

Нравится

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

Включение и отключение строки итогов в реестре сделано на уровне ядра, из конфигурации (в скрипте или в дизайнере страницы) на это свойство можно влиять только через IsSummaryVisible. Вероятно, у Вас итоги не работают именно из-за вызываемой функции вместо колонок в SelectQuery, ведь для неё SUM не имеет смысла.

Спасибо, понятно.

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

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

Хотим сделать чтобы в редактируемом реестре записи отображались как ссылки для удобного перехода, нашел что для этого необходимо добавить признак useLinks: true для DataGrid и метод-обработчик linkClicked, но это почему-то не меняет ситуацию, строки отображаются как обычно... ошибок в консоли нет

Код DataGrid:

{
    "operation": "merge",
    "name": "DataGrid",
    "values": {
        "className": "Terrasoft.ConfigurationGrid",
        "generator": "ConfigurationGridGenerator.generatePartial",
        "generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
        "changeRow": {"bindTo": "changeRow"},
        "unSelectRow": {"bindTo": "unSelectRow"},
        "onGridClick": {"bindTo": "onGridClick"},
        "activeRow": {"bindTo": "ActiveRow"},
        "selectedRows": {"bindTo": "SelectedRows"},
        "activeRowActions": [
            {
                "className": "Terrasoft.Button",
                "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                "tag": "save",
                "markerValue": "save",
                "imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
            },
            {
                "className": "Terrasoft.Button",
                "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                "tag": "card",
                "markerValue": "card",
                "imageConfig": {"bindTo": "Resources.Images.CardIcon"}
            },
            {
                "className": "Terrasoft.Button",
                "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                "tag": "cancel",
                "markerValue": "cancel",
                "imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
            },
            {
                "className": "Terrasoft.Button",
                "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                "tag": "remove",
                "markerValue": "remove",
                "imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
            }
        ],
        "initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
        "activeRowAction": {"bindTo": "onActiveRowAction"},
        "multiSelect": false,
        "useLinks": true,
        "primaryColumnName": "Id",
        "sortColumnIndex": null,
        "listedZebra": true,
        "type": "listed"
    }
}

 

Посмотрите, пожалуйста, может я что-то упустил

Нравится

3 комментария
Лучший ответ

Добрый день!

Я бы Вам рекомендовал посмотреть в сторону метода addColumnLink в GridUtilitiesV2. Так же можно изучить поподробнее как формируются ссылки в FileDetailV2

Добрый день!

Я бы Вам рекомендовал посмотреть в сторону метода addColumnLink в GridUtilitiesV2. Так же можно изучить поподробнее как формируются ссылки в FileDetailV2

Обрати внимание на флаг showValueAsLink (и выше тебе уже ответили в системе множество примеров, потрать немного времени и разберись)

ПРимер использования ниже

{
    "operation": "insert",
    "name": "UsrURLpage",
    "values": {
        "layout": {
            "colSpan": 12,
            "rowSpan": 1,
            "column": 0,
            "row": 3,
            "layoutName": "Header"
        },
        "labelConfig": {},
        "enabled": true,
        "bindTo": "UsrURLpage",
        "showValueAsLink": true,
        "href": {
            "bindTo": "UsrURLpage",
            "bindConfig": {"converter": "getUsrURLpageLink"}
        },
        "controlConfig": {
            "className": "Terrasoft.TextEdit",
            "linkclick": { bindTo: "onUsrURLpageLinkClick"}
        }
    },
    "parentName": "Header",
    "propertyName": "items",
    "index": 6
}

 

Переопределил метод addColumnLink, спасибо Константину за наводку:

addColumnLink: function(item, column) {
    this.callParent(arguments);
 
    var columnPath = column.columnPath;
    if (columnPath === "UsrProduct") {
        item["on" + columnPath + "LinkClick"] = function() {
            var value = this.get(columnPath);
            return {
                caption: item.values.UsrProduct.displayValue,
                target: "_self",
                title: item.values.UsrProduct.displayValue,
                url: "/0/Nui/ViewModule.aspx#CardModuleV2/ProductPageV2/edit/" + item.values.UsrProduct.value
            };
        };
    }
}

При переходе по ссылке появились ошибки в консоли, видимо не мог поставить фокус при переходе, просто убрал фокус на это поле:

focusActiveRowControl: function(columnName) {
    if (!columnName || columnName === "UsrProduct") {
        return;
    }
    var activeRow = this.getActiveRow();
    activeRow.set("Is" + columnName + "Focused", true);
    this.currentActiveColumnName = columnName;
}

 

Всем спасибо за помощь...)

 

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

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

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

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

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

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

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

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

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

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

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

Нравится

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

Добрый день. Не очень понял, а почему "я уперся в 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}
	};
},

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

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

спасибо, что не промолчал ;)

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