Технические вопросы
5.x

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

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

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

Нравится

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

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

[csharp]
var primaryColumnValue = Page.DataSource.ActiveRow.PrimaryColumnValue;

var config = new DataSourceRowConfig(primaryColumnValue);

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

[/csharp]

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

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

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

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

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

Шаги:

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

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

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

[csharp]
Page.TreeGrid.GetRowConfigHandler = GetDetailRowConfig;
Page.DataSource.Loaded += Page.TreeGrid.DataLoaded;
[/csharp]

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

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

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

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

Шаги:

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-й линии поддержки


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

[csharp]
Page.TreeGrid.GetRowConfigHandler = delegate(Terrasoft.Core.Entities.Entity row) {
string primaryColumnName = row.Schema.PrimaryColumn.Name;
string primaryColumnValue = row.GetTypedColumnValue(primaryColumnName);
var config = new DataSourceRowConfig(primaryColumnValue);
Guid resultId = row.GetTypedColumnValue("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();
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;
[/csharp]

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

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

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

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


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

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

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

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


Версия 5.1.1.159

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

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

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

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

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

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

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

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

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

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

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

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

[csharp]
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("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();
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;
[/csharp]

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