Покрасить реестр детали раздела...

Задача раскрасить основной реестр раздела давно решенна, но возникла другая: раскрасить реестр ДЕТАЛИ РАЗДЕЛА.

Не пойму как.....

Нравится

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

Пытаюсь на PageLoadComplete страницы реестра детали сделать так:

var primaryColumnValue = Page.DataSource.ActiveRow.PrimaryColumnValue;
 
var config = new DataSourceRowConfig(primaryColumnValue);
 
config.AddConfig(new DataSourceRowColorConfigValue("Red"));

но вылетает на первой же строчке....

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

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

Очень бы хотелось чтобы возможно..... :biggrin:

Александр, судя по всему - возможно :)

Шаги:

1. Создать метод в нужной Вам странице реестра - GetDetailRowConfig(Entity module). Ну к примеру:

string primaryColumnName = module.Schema.PrimaryColumn.Name;
string primaryColumnValue = module.GetColumnValue(primaryColumnName).ToString();
var config = new DataSourceRowConfig(primaryColumnValue);
string PriorityColumnValue = module.GetTypedColumnValue<Guid>("Priority").ToString();
if(PriorityColumnValue == "guid приоритета критичный"){
   config.AddConfig(new DataSourceRowColorConfigValue("Red"));
}else if(PriorityColumnValue == "guid приоритета важный") {
   config.AddConfig(new DataSourceRowColorConfigValue("Yellow"));
}

2. На PageLoad (по аналогии с BaseModulePage) прописать делегаты:

Page.TreeGrid.GetRowConfigHandler = GetDetailRowConfig;
Page.DataSource.Loaded += Page.TreeGrid.DataLoaded;

Супер, опробую завтра с утра.

Все заработало, супер, спасибо.

"Олейник Дмитрий" написал:

Александр, судя по всему - возможно :)

Шаги:

1. Создать метод в нужной Вам странице реестра - GetDetailRowConfig(Entity module). Ну к примеру:

string primaryColumnName = module.Schema.PrimaryColumn.Name;

string primaryColumnValue = module.GetColumnValue(primaryColumnName).ToString();

var config = new DataSourceRowConfig(primaryColumnValue);

string PriorityColumnValue = module.GetTypedColumnValue<Guid>("Priority").ToString();

if(PriorityColumnValue == "guid приоритета критичный"){

   config.AddConfig(new DataSourceRowColorConfigValue("Red"));

}else if(PriorityColumnValue == "guid приоритета важный") {

   config.AddConfig(new DataSourceRowColorConfigValue("Yellow"));

}

2. На PageLoad (по аналогии с BaseModulePage) прописать делегаты:

Page.TreeGrid.GetRowConfigHandler = GetDetailRowConfig;

Page.DataSource.Loaded += Page.TreeGrid.DataLoaded;

С уважением,

Олейник Дмитрий

Эксперт 3-й линии поддержки


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

Page.TreeGrid.GetRowConfigHandler = delegate(Terrasoft.Core.Entities.Entity row) {                   
	string primaryColumnName = row.Schema.PrimaryColumn.Name;
	string primaryColumnValue = row.GetTypedColumnValue<string>(primaryColumnName);
	var config = new DataSourceRowConfig(primaryColumnValue);
	Guid resultId = row.GetTypedColumnValue<Guid>("DesignatedUseStatusId");
	string cellColor = String.Empty;
	//Указываем цвет фона ячеек реестра в зависимости от условия
	if (resultId.Equals(new Guid("{F79FBF11-5799-55E8-E043-323E1EACFB56}"))) { //Целевое использование не подтверждено
		cellColor = "Red";
	//	config.AddConfig(new DataSourceRowColorConfigValue(cellColor));
	}
	if (resultId.Equals(new Guid("{F79FBF11-5798-55E8-E043-323E1EACFB56}"))) { //Целевое использование подтверждено
		cellColor = "Green";
	//	config.AddConfig(new DataSourceRowColorConfigValue(cellColor));
	}
 
	var cellsBackground = new Dictionary<string, DataSourceRowColumnBackgroundColorConfigValue>();
	if (!cellColor.Equals(String.Empty)) {
		cellsBackground.Add("Result", new DataSourceRowColumnBackgroundColorConfigValue(cellColor));
		config.AddConfig(new DataSourceRowColumnsBackgroundColorConfigValue(cellsBackground));
	}
 
	return config;
};
Page.DataSource.Loaded += Page.TreeGrid.DataLoaded;
 
return true;

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

"Maxim Gritsenko" написал:

В делегате все ок.

Возможно, проблемы есть на диаграмме. Событийный подпроцесс для цепочки сообщений PageLoad и скрипта создали?


я все сделал как должно быть и Событийный подпроцесс тоже, высылаю скриншот.

Какая версия/сборка?

"Maxim Gritsenko" написал:

Какая версия/сборка?


Версия 5.1.1.159

Не уверен, что для данной версии инструкции актуальны. Уточняем у разработчиков, как получим ответ, обязательно передадим вам.

"Maxim Gritsenko" написал:

Не уверен, что для данной версии инструкции актуальны. Уточняем у разработчиков, как получим ответ, обязательно передадим вам.

Добрый день. Максим,
вы уточнили у свойх коллег?

Добрый день.
Пока что в процессе.

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

Пришел ответ от коллег из разработки.

Да, это возможно. Более того, код из вложения должен работать. Специально развернул 5.1.1 и проверил (практически один в один переписал код клиента). Раскраска реестра работает.

Прошу обратить внимание на тот факт, что при его реализации раскрашивается только одна колонка реестра с названием Result. В связи с этим вижу два возможных варианта, почему данная реализация не работает у клиента:

1) В реестр не вынесена (скрыта) колонка с названием Result;
2) В схеме реестра вообще отсутствует колонка с названием Result.

Я проверил и для текстовых полей, и для полей типа «Справочник» - вот результат:

На всякий случай привожу код обработки LoadPage (пример для базовой страницы реестра адресов):

Page.TreeGrid.GetRowConfigHandler = delegate (Terrasoft.Core.Entities.Entity row) {
string primaryColumnName = row.Schema.PrimaryColumn.Name;
string primaryColumnValue = row.GetColumnValue(primaryColumnName).ToString();
var config = new DataSourceRowConfig(primaryColumnValue);
Guid TypeColumnValue = row.GetTypedColumnValue<Guid>("AddressTypeId");
string cellColor = String.Empty;
if(TypeColumnValue.Equals(new Guid("{4F8B2D67-71D0-45FB-897E-CD4A308A97C0}"))){
cellColor = "Red";
}else if(TypeColumnValue.Equals(new Guid("{780BF68C-4B6E-DF11-B988-001D60E938C6}"))) {
cellColor = "Yellow";
}
var cellsBackground = new Dictionary<string, DataSourceRowColumnBackgroundColorConfigValue>();
if (!cellColor.Equals(String.Empty)) {
                cellsBackground.Add("Address", new DataSourceRowColumnBackgroundColorConfigValue(cellColor));
                cellsBackground.Add("Country", new DataSourceRowColumnBackgroundColorConfigValue(cellColor));
                config.AddConfig(new DataSourceRowColumnsBackgroundColorConfigValue(cellsBackground));
}
 
return config;
};
Page.DataSource.Loaded += Page.TreeGrid.DataLoaded;
return true;
Показать все комментарии