Вопрос

Видимость кнопки "Удалить"

Добрый день.

 

Пытаюсь сделать видимость кнопки "удалить" (DataGridActiveRowDeleteAction) в разделе у активной строки, однако не срабатывает биндинг на visible.

define("OpportunitySectionV2", [], function () {
	return {
		entitySchemaName: "Opportunity",
		details: /**SCHEMA_DETAILS*/ {} /**SCHEMA_DETAILS*/ ,
		attributes: {
			"IsDeleteButtonVisible": {
				"dataValueType": Terrasoft.DataValueType.BOOLEAN,
				"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				"value": true
			}
		},
		diff: /**SCHEMA_DIFF*/ [{
				"operation": "set",
				"name": "CreateOrderFromOpportunityButton",
				"parentName": "CombinedModeActionButtonsCardLeftContainer",
				"propertyName": "items",
				"index": 5,
				"values": {
					"visible": false
				}
			},
			{
				"operation": "merge",
				"name": "DataGridActiveRowDeleteAction",
				"values": {
					"visible": {"bindTo": "IsDeleteButtonVisible"},
				}
			}
		] /**SCHEMA_DIFF*/ ,
		methods: {
			init: function () {
				this.callParent(arguments);
				this.set("IsDeleteButtonVisible", false);
			}
		}
	};
});

В чем проблема?

Нравится

6 комментариев

Здравствуйте! Можно разграничить доступ по операциям на запись для определённых ролей.

Нигрескул Алексей,

да, в этом случае при удалении будет выдана ошибка об

отсутствии прав, но так же надо скрывать эту кнопку

А другие свойства этой кнопки аналогично тоже не меняются, или дело только в видимости? А видимость других кнопок рядом тоже не срабатывает? Может, это не стандартная кнопка удаления, а та полностью удалена, а вместо неё добавлена в дочерних пакетах другая со своей логикой удаления? 

а что за операция такая "set"?

свойство "enabled" также не отрабатывает?

Видимость элемента "DataGridActiveRowDeleteAction" в коробке привязана к методу "canDeleteRecords" - его замещение также не отрабатывает? Не забывайте про пункт удалить при мульвыборе

Кстати, действительно, проверьте, отрабатывает ли Ваша логика или только стандартная из BaseDataView пакета NUI, которую имел в виду Вадим (и какая из них раньше).

 

Там своя функция, всегда возвращающая истину:

canDeleteRecords: function() {
	return true;
},
...
isVisibleDeleteAction: function() {
	return this.get("MultiSelect") && this.canDeleteRecords();
},
...
createDeleteRecordButton: function() {
	return this.getButtonMenuItem({
		"Caption": {bindTo: "Resources.Strings.DeleteRecordButtonCaption"},
		"Enabled": {bindTo: "isAnySelected"},
		"Visible": {bindTo: "isVisibleDeleteAction"},
		"Click": {bindTo: "deleteRecords"},
		"IsEnabledForSelectedAll": true
	});
},

Идея добавить логику скрытия кнопки из реестра (например, удаления записи), если у пользователя нету прав на данную операцию в разделе, уже зарегистрирована.

в разделе для выделенной строке, я так кнопки удалял (Копировать, Открыть, Удалить):

                {
                    "operation": "remove",
                    "name": "DataGridActiveRowCopyAction"
                },
                {
                    "operation": "remove",
                    "name": "DataGridActiveRowOpenAction"
                },
                {
                    "operation": "remove",
                    "name": "DataGridActiveRowDeleteAction"
                },

Показать все комментарии