Здравствуйте.
Использую версию системы 5.4.1.1034
Создала новую кнопку в реестре документов, у этой кнопки создала список. Т.е. при нажатии на кнопку вываливается список. При нажатии на один из пунктов запускается процесс, который описан в дизайнере процесса карточки.
Мне нужно, чтобы этот список менялся, т.е. какие то пункты скрывались, а какие то отображались, при смене активной строки реестра. Если быть конкретнее, то в зависимости от вида документа, который сейчас выбран в реестре, должен быть отображен тот или иной список пунктов меню.
Я так понимаю, что логику нужно накладывать на событие DataSourceActiveRowChanged.
А дальше что делать?
Пробовала удалять меню кодом, потом подпихивать новые пункты и скриптом и просто хиденом:
var button = Page.Print;
var menu = button.Menu;
menu.RemoveAll();
var esquery = new EntitySchemaQuery(UserConnection.EntitySchemaManager, Page.DataSource.Schema.Name);
esquery.AddAllSchemaColumns();
var entity = esquery.GetEntity(UserConnection, SelectedNodePrimaryColumnValue);
if(entity == null){
//button.Hidden = false;
return true;
}
Guid DocumentId = entity.GetTypedColumnValueGuid>("Id");
Guid documentCategoryId = entity.GetTypedColumnValueGuid>("CategoryId");
Guid DocumentCategory_SPokupatelem = (Guid)Core.Configuration.SysSettings.GetValue(UserConnection, "DocumentCategory_SPokupatelem");
if(documentCategoryId == DocumentCategory_SPokupatelem) {
string script = string.Empty;
var menuItem1 = Page.MenuItem1;
var menuItem2 = Page.MenuItem2;
menu.Add(menuItem1);
menu.Add(menuItem2);
script = string.Format("window.{0} = {1};\n", menuItem1.ClientID, menuItem1.GenerateControlScript(true, null));
script += string.Format("{0}.getMenu().addItem(window.{1});\n", button.ClientID, menuItem1.ClientID);
//script += string.Format("{0}.getMenu().addSeparator();\n", button.ClientID);
script = string.Format("window.{0} = {1};\n", menuItem2.ClientID, menuItem2.GenerateControlScript(true, null));
script += string.Format("{0}.getMenu().addItem(window.{1});\n", button.ClientID, menuItem2.ClientID);
Page.AddScript(script);
Page.MenuItem1.Hidden = false;
Page.MenuItem2.Hidden = false;
Page.MenuItem3.Hidden = false;
Page.MenuItem4.Hidden = false;
Page.MenuItem5.Hidden = false;
Page.MenuItem6.Hidden = false;
Page.MenuItem7.Hidden = false;
}