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