Задача раскрасить основной реестр раздела давно решенна, но возникла другая: раскрасить реестр ДЕТАЛИ РАЗДЕЛА.
Не пойму как.....
Нравится
Пытаюсь на PageLoadComplete страницы реестра детали сделать так:
var primaryColumnValue = Page.DataSource.ActiveRow.PrimaryColumnValue; var config = new DataSourceRowConfig(primaryColumnValue); config.AddConfig(new DataSourceRowColorConfigValue("Red"));
но вылетает на первой же строчке....
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.
Александр, попробую уточнить возможно ли, и если да - то как у коллег из департамента разработки. Результат сообщу Вас сегодня в течении дня.
Александр, судя по всему - возможно :)
Шаги:
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;