Цвет записей грида от значения колонки

Обычное дело: как в 7.8 менять цвет строки в зависимости от значения колонок
вот как тут: https://community.terrasoft.ru/forum/topic/12359
только для 7.8

Нравится

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

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

Виталий, здесь посмотрите - http://www.community.terrasoft.ru/forum/topic/12855

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

Здравствуйте.
Чтобы среагировать на событие закрытие карточки, достаточно переписать метод onSaved карточки. Другое дело что это карточка, и код вы пишите в карточке, а чтобы секция об этом узнала, то вам необходимое использовать песочницу (сообщения). О песочнице читайте здесь:
http://www.community.terrasoft.ru/forum/topic/15210
Алгоритм:
Сохраняется карточка, в методе onSaved делаете публикацию сообщения.
В секции слушаете это сообщение и делаете reloadGridData

а разве нельзя переписать существующую функцию, ту что обновляет данные из колонок?

А как она узнает что запись изменилась? Никак, для этого и нужна песочница(сообщения).

"Радчук Виталий Владимирович" написал:

а разве нельзя переписать существующую функцию, ту что обновляет данные из колонок?


Можно попробовать переопределить метод onCardModuleResponse в нужной схеме раздела (вычислил путем отладки). Этот метод изначально объявлен в схеме NUI.BaseSectionV2 и выглядит следующим образом (взял пример из 7.6):

	/**
	 * Обрабатывает ответ карточки после сохранения записи.
	 * @param {Object} response
	 * @return {Boolean}
	 */
	onCardModuleResponse: function(response) {
		this.set("IsCardInChain", response.isInChain);
		this.loadGridDataRecord(response.primaryColumnValue);
		return true;
	}

У метода loadGridDataRecord вторым параметром можно передать callback метод, который выполнится после обновления полей активной записи грида полями из сохраненной карточки редактирования этой записи. В этом callback-методе и проверять значение нужной вам колонки и менять подсветку записи при необходимости.

Пример реализации, если взять, что цвет записи в гриде зависит от значения кастомного поля TsSpecialFeature:

	/**
	 * Обрабатывает ответ карточки после сохранения записи.
	 * @overridden
	 * @param {Object} response
	 * @return {Boolean}
	 */
	onCardModuleResponse: function(response) {
		this.set("IsCardInChain", response.isInChain);
		this.loadGridDataRecord(response.primaryColumnValue, this.onCardModuleResponseCallback);
		return true;
	},
	/**
	 * Callback-функция обработки результата перечитывания указанной записи из базы данных
	 * @protected
	 */
	onCardModuleResponseCallback: function() {
		var activeRow = this.getActiveRow();
		if (activeRow) {
			var tsSpecialFeature = activeRow.get("TsSpecialFeature");
			if (tsSpecialFeature &&
				tsSpecialFeature.value !== TSCConstants.TsSpecialFeature.None.value) {
				activeRow.customStyle = { "background-color": lightTomatoColor};
			} else {
				activeRow.customStyle = null;
			}
		}
	}
Показать все комментарии