Здравствуйте!

Подскажите, как можно переопределить класс с атрибутом DefaultBinding?

Если я делаю класс наследник с атрибутом [Override] то он не вызывается, если я еще раз задаю классу атрибут то выходит ошибка

Ошибка создания экземпляра класса "Terrasoft.Configuration.FileImport.IImportStageFactory" ---> Ninject.ActivationException: Error activating IImportStageFactory

More than one matching bindings are available.

 

Класс родитель:

Изображение удалено.

Создание из фабрики:

Изображение удалено.

Класс наследник:

Изображение удалено.

 

Нравится

1 комментарий
Лучший ответ

Добрий день!

 

Необходимо создать свой AppEventListener и в нем перебиндить ваш класс к необходимому интерфейсу.

public class UsrAppEventListener : AppEventListenerBase
{
    public override void OnAppStart(AppEventContext context) {
        base.OnAppStart(context);
        ClassFactory.Bind<IImportStageFactory, UsrImportStageFactory>();
    }
}

 

Добрий день!

 

Необходимо создать свой AppEventListener и в нем перебиндить ваш класс к необходимому интерфейсу.

public class UsrAppEventListener : AppEventListenerBase
{
    public override void OnAppStart(AppEventContext context) {
        base.OnAppStart(context);
        ClassFactory.Bind<IImportStageFactory, UsrImportStageFactory>();
    }
}

 

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

Добрый день, по клику на шапку колонки вызывается функция onClick в label.js, затем идёт проверка подписан ли объект на данный эвент через this.fireEvent("click", this). В Label.hasListener подписки на "click" нету и ничего не происходит. Пожалуйста подскажите, как забиндить метод на click и как передать нужные аргументы в этот метод.

 

Нашёл место где создаются лейблы, но как я понял, через конфиг можно передать только свойства объекта.

/**
 * Rerenders grid header.
 * @protected
 */
reRenderGridHeader: function() {
	var captionContainer = this.Ext.getCmp("gridCaptionContainer");
	var columnsConfigs = this.getGridHeaderConfigs();
	captionContainer.items.clear();
	this.Terrasoft.each(columnsConfigs, function(columnConfig) {
		var label = this.Ext.create("Terrasoft.Label", columnConfig);
		captionContainer.items.add(columnConfig.id, label);
	}, this);
	captionContainer.reRender();
},
 
/**
 * Returns config on caption column.
 * @override
 * @param {Object} columnInfo
 * @param {String} columnInfo.name Column name.
 * @param {Number} columnInfo.colSpan Column size.
 * @param {String} columnInfo.caption Column caption.
 * @return {Object} Column control config.
 */
getCaptionControlConfig: function(columnInfo) {
	var className = "Label";
	var id = ["caption", this._formatColumnName(columnInfo.name), className.toLowerCase()].join("-");
	var config = {
		className: "Terrasoft." + className,
		id: id,
		selectors: {wrapEl: "#" + id},
		markerValue: columnInfo.name
	};
	config.caption = columnInfo.caption;
	config.classes = {
		labelClass: ["grid-cols-" + columnInfo.colSpan,
			"gridRow" + columnInfo.name + "LabelCaption"]
	};
	return config;
},

 

Нравится

3 комментария
Лучший ответ

Это вы сильно глубоко копаете в логику системы. Находите схему ChangeAdminRightsUserTaskPropertiesPage, там есть код(функция generateChangeAdminRightsItemViewConfig) который создаете label и вещает на его нажатие функцию.

Это вы сильно глубоко копаете в логику системы. Находите схему ChangeAdminRightsUserTaskPropertiesPage, там есть код(функция generateChangeAdminRightsItemViewConfig) который создаете label и вещает на его нажатие функцию.

Полозюков Евгений Петрович,

Здравствуйте, в generateChangeAdminRightsItemViewConfig я должен передать уже созданный label? Как передать функцию, на которую я хочу повесить бинд? 

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

При использовании Data binding tool возникает ошибка, если пытаться привязать настройку колонок в детали. В основном это касается custom'ных деталей (добавленными стандартными инструментами через мастер деталей), но иногда возникает и со стандартными

Изображение удалено.

Нравится

3 комментария
Лучший ответ

Владимир, добрый день! Привязка настроек колонок выполняется только для тех настроек, которые сохранены для всех пользователей. В вашем случае вы скорее всего добавили новую деталь, сохранили настройку колонок для конкретного пользователя и попытались сохранить привязку данных.

Сообщение системное, поэтому нет возможности сделать его более информативным. Добавила дополнительное уточнение на вкладке Установка и настройка на странице решения.

Владимир, добрый день!

 

уточните, пожалуйста, продукт и версию Creatio, на которой воспроизводится указанная ошибка? И также очень будет полезна информация, когда устанавливали приложение?

Владимир, добрый день! Привязка настроек колонок выполняется только для тех настроек, которые сохранены для всех пользователей. В вашем случае вы скорее всего добавили новую деталь, сохранили настройку колонок для конкретного пользователя и попытались сохранить привязку данных.

Сообщение системное, поэтому нет возможности сделать его более информативным. Добавила дополнительное уточнение на вкладке Установка и настройка на странице решения.

Лазоренко Ирина,

Спасибо большое! Действительно, после сохранения для всех пользователей, настройка колонок успешно привязалась!

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

При биндинеге значения поля или его свойства на метод, последний вызывается при инициализации соответствующего значения.
Можно ли в последующем как либо в коде инициализировать его повторно, т.е. заставить биндинг поля отработать снова.
(Обходные пути через бизнес-правила и биндинг на атрибут мне известны).
Но если бы можно было скажем повторно инициализировать целевое свойство или значение целевого поля - это было бы более лаконичным решением, без "оверхеда" по сущностям и коду.
А так же открыло бы возможность осуществлять псевдо-реактивную привязку данных, без переработки существующих схем, просто инициализируя их повторно в нужный момент в собственной "бизнес-логике"

Нравится

1 комментарий

Здравствуйте,
Такой возможности нет, только биндить на атрибут, а его значение заполнять методом в нужные вам моменты.

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

Зачастую в атрибуте объявляется целый перечень колонок
н/п

attributes: {
                        "UsrConfigProduct": {
                                lookupListConfig: {
                                        columns: [
                                                "UsrBrand",
                                                "UsrClass",
                                                "UsrProductType",
                                                "UsrProductCountry"
                                        ]
                                }
                        }
                }

Значения полей легко "биндятся" на сам атрибут, а вот можно ли забиндиться на какую либо колонку атрибута, и если да то как ?
Это было бы просто "серебряной пулей" в целом кластере типовых задач, не пришлось бы плодить лишних атрибутов, или реализовывать методов которые при смене целевого значения, начинают каскадно делать то же самое - обновлять значения полей только уже через доступ к колонкам атрибута.

Нравится

1 комментарий

Биндится на подколонки возможности нет. Обходной путь: вешать обработчики изменения основного атрибута, читать его подколонки, записывать в отдельный нужный атрибут, и биндится на него.

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