Здравствуйте!
Нужно в одной детали сделать такой же функционал реестра, как в [Администрирование] - [Доступ к объектам], т.е. чтобы имя менять было нельзя, а можно было только галки переключать из реестра. Был бы очень рад примерам такой реализации (нужно одну галку в реестре детали менять из реестра без использования карточки).
Нравится
В BPMOnline Вы тоже можете это реализовать.
На событии Init реестра необходимо привязать обработчики нажатия.
Вот пример кода:
Page.TreeGrid.AjaxEvents.CellIconClick.Event += CellIconClickHandler; Page.TreeGrid.AjaxEvents.CellIconClick.ExtraParameters.Add( new Terrasoft.UI.WebControls.Controls.Parameter("nodeId", "nodeId", Terrasoft.UI.WebControls.Controls.ParameterMode.Raw)); Page.TreeGrid.AjaxEvents.CellIconClick.ExtraParameters.Add( new Terrasoft.UI.WebControls.Controls.Parameter("iconId", "iconId", Terrasoft.UI.WebControls.Controls.ParameterMode.Raw)); Page.TreeGrid.ImageList = "Terrasoft.WebApp"; Page.DataSource.Loaded += Page.TreeGrid.DataLoaded; Page.TreeGrid.AjaxEvents.CellIconClick.ShowLoadMask = true; Page.TreeGrid.AjaxEvents.CellIconClick.ShowOpaqueMask = true; Page.DataSource.PrepareFilters += delegate (object sender, DataSourceEventArgs e) { var dataSource = Page.DataSource; var currentStructure = dataSource.CurrentStructure; var sysSolutionFilter = currentStructure.Filters.FindByName("SysSolutionFilter"); if(sysSolutionFilter == null) { sysSolutionFilter = currentStructure.CreateFilterWithParameters(dataSource.Schema, FilterComparisonType.Equal, "SysSolution", Page.UserConnection.Solution.Id); sysSolutionFilter.Name = "SysSolutionFilter"; currentStructure.Filters.Add(sysSolutionFilter); } }; Page.DataSource.SaveError += delegate(object sender, DataSourceEventArgs e) { Guid redactedId = e.Request == null ? Guid.Empty : e.Request.PrimaryColumnValue; if (redactedId != Guid.Empty) { Page.DataSource.LoadRow(redactedId); } ShowErrorMessage(e.Exception.Message); e.IsHandled = true; }; Page.DataSource.LoadRowsResponseRegistered += delegate(object sender, DataSourceEventArgs e) { context.ThrowEventArgs = e; ThrowEvent(context, "DataSourceLoadRowsResponseRegistered"); };
Здравствуйте!
Подскажите пожалуйста, можно ли убрать событие на двойной клик записи реестра (чтобы он не пытался открыть карточку, так как карточки у меня нету)? И есть ли функция обновления записи реестра (я нашел только метод обновления всего реестра, но при этом сбрасывается выделение и выбранная страница).
Здравствуйте, Дмитрий!
Логика обработки двойного клика наследуется от базовой страницы редактирования, поэтому для того, чтобы ее отключить в дочерней, следует переопределить обработчик.
Это можно сделать следующим образом:
1. Выберите элемент Реестр
2. Переключитесь на События
3. Создайте обработчик события OnDoubleClick
По нажатию на смарт-тег с молнией автоматически создастся пустой обработчик события.
Затем опубликуйте реестр, и событие базового реестра отрабатывать не будет.
Так пробовал делать, обработчик создавал, опубликовывал, но по двойному клику все равно выскакивает ошибка
Здравствуйте, Дмитрий.
В процессе базовой страницы реестра есть сообщение TreeGridDblClick при получении которого выбрасывается промежуточное EditButtonClick. Попробуйте удалить соединяющий их поток и опубликовать страницу.
"Maxim Gritsenko" написал:Здравствуйте, Дмитрий.
В процессе базовой страницы реестра есть сообщение TreeGridDblClick при получении которого выбрасывается промежуточное EditButtonClick. Попробуйте удалить соединяющий их поток и опубликовать страницу.
"Сражаюсь" с аналогичной проблемой - свой обработчик сделал, но все равно каким-то образом событие ловит базовый скрипт... А если удалить проброс события в базовом скрипте, я так понимаю, двойной клик вообще работать перестанет везде, или я не прав?
Добрый день.
Для запрета двойного щелчка, помимо переопределения события двойного щелчка, необходимо переопределить наследуемый метод GetRegisterTreeGridDblClickScript, заменив его тело на:
return String.Empty;