Я хочу условно добавить панель инструментов в свою сетку пользовательского интерфейса Kendo на основе пользовательских разрешений. Ниже приведены мои фрагменты кода:Kendo UI Grid: Как условно добавить кнопку «создать» кнопку на панели инструментов динамически
<div kendo-grid="ctrl.kendoGrid" id="myGrid" k-height="450" k-options="ctrl.genevaIndexSwapMappingGridOptions"></div>
Сетка шаблон панели инструментов:
<script type="text/x-kendo-template" id="template">
<div class="toolbar">
<a class="k-button k-button-icontext k-grid-add" href="\#">
<span class="k-icon k-add"></span>
Add Geneva Rate Schedule Ref Index
</a>
</div>
</script>
Я также попытался указать на панели инструментов в параметрах сетки, а затем переключая его видимость с помощью $(".k-grid-toolbar").hide();
; но это заставляет панель инструментов отображаться в пользовательском интерфейсе, а затем исчезает, заставляя элемент управления мерцать в пользовательском интерфейсе.
Я даже пытался что-то вроде ниже, но не мог заставить его работать:
dataBound: function() {
//var template = kendo.template($("#template").html());
//var toobar = $("<div class='k-toolbar k-grid-toolbar k-widget'></div>").append(template);
//this.options.toolbar = [{ template: kendo.template($("#template").html()) }];
//ctrl.genevaIndexSwapMappingGridOptions.toolbar = template;
},
Есть ли способ я могу создать и вынести панель инструментов на сетке динамически в зависимости от конкретного состояния?
Список используемых: Create another toolbar in kendo grid
EDIT: Я реализовал @ решение DontVoteMeDown, но он сломал другую функциональность. Я использую собственные редакторы для некоторых полей. Когда открывается всплывающее диалоговое окно «create», оно не может отображать пользовательские элементы управления кендо. В конфигурации колонки я указать пользовательский шаблон редактор для моих полей, как показано ниже:
{
field: "RS_RefIndex_GvId", title: "Rate Schedule – Reference Index",
editor: function (container, options) {
$('<input kendo-drop-down-list data-value-primitive="true" required k-on-change="dataItem.dirty=true" k-data-source="ctrl.rateScheduleRefIndexList" ng-model="dataItem.RS_RefIndex_GvId" k-option-label="\'Select...\'" />').appendTo(container);
}
},
Если удалить мое событие DataBound, который условно добавляет панель инструментов к сетке, и указать панель как свойство о параметрах сетки , то элементы управления отображаются правильно.
dataBound: function() {
if (!ctrl.isSetOptions) {
if (DataSvc.isUserAdmin) {
ctrl.isSetOptions = true;
ctrl.kendoGrid.setOptions({ toolbar: [{ name: 'create', text: 'Add Geneva Index Swap Mapping', }] });
}
}
if (DataSvc.isUserAdmin) {
ctrl.kendoGrid.showColumn("CommandColumn");
}
else {
ctrl.kendoGrid.hideColumn("CommandColumn");
}
},
Любая помощь по этому просьба? Метод
Как вы создаете сетку? с js? – raven
Нет. Управление сеткой определено в разметке, а параметры сетки определены в угловом контроллере. – Lucifer
Я не понимаю, почему вы хотите добавить кнопку «Создать» в этот момент, вы можете создать ее до того, как будет создана сетка (я не уверен, как вы это делаете), а затем в dataBound вы можете показать/скрыть или даже удалить кнопку, если пользователь не является администратором. – Gabriel