Вопрос

Как менять на лету multiLookupColumns

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

Есть вот такое мультилукапное поле

 

"BsoDeliveryAddress": {
                "caption": "Адрес доставки",
                "dataValueType": this.Terrasoft.DataValueType.LOOKUP,
                "multiLookupColumns": ["BsoDeliveryAddressContact", "BsoDeliveryAddressAccount"]
            },

В зависимости от разных условий состав multiLookupColumns должен меняться.

Подскажите как это можно сделать при инициализации и непосредственно в коде в каком нибудь методе?

Нравится

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

Добрый день,

 

На схему страницы редактирования, где было добавлено мультилукап, нужно добавить метод getMultiLookupPageConfig и переопределить его:

getMultiLookupPageConfig: function(args, columnName) {
				var multiLookupColumns = ["PrimaryContact", "Country"];
				var multiLookupConfig = multiLookupColumns.map(function(column) {
					var config = this.getLookupPageConfig(args, column);
					Ext.apply(config, {
						columnName: columnName,
						columnValue: this.get(columnName),
						multiLookupColumnName: column
					});
					var lookupDefValues = this.getLookupValuePairs(column);
					if (lookupDefValues) {
						var valuePairs = config.valuePairs || [];
						config.valuePairs = this.Ext.Array.merge(valuePairs, lookupDefValues);
					}
					return config;
				}, this);
				return {
					lookupPageName: "MultiLookupModule",
					multiLookupConfig: multiLookupConfig
				};
			}

В примере выше независимо от того, что будет указано в multiLookupColumns, открываться будет мультилукап по колонкам ["PrimaryContact", "Country"]. Сюда нужно еще будет добавить проверку на columnName, потому что на странице может быть несколько мультилукапных полей, и условия присвоения значения параметру multiLookupColumns внутри метода (мы остаемся в контексте страницы, где лукап выведен, поэтому можно делать проверку по значениям на странице). Метод вызывается каждый раз, когда открывается модальное окно для выбора значения в справочнике.

Добрый день,

 

На схему страницы редактирования, где было добавлено мультилукап, нужно добавить метод getMultiLookupPageConfig и переопределить его:

getMultiLookupPageConfig: function(args, columnName) {
				var multiLookupColumns = ["PrimaryContact", "Country"];
				var multiLookupConfig = multiLookupColumns.map(function(column) {
					var config = this.getLookupPageConfig(args, column);
					Ext.apply(config, {
						columnName: columnName,
						columnValue: this.get(columnName),
						multiLookupColumnName: column
					});
					var lookupDefValues = this.getLookupValuePairs(column);
					if (lookupDefValues) {
						var valuePairs = config.valuePairs || [];
						config.valuePairs = this.Ext.Array.merge(valuePairs, lookupDefValues);
					}
					return config;
				}, this);
				return {
					lookupPageName: "MultiLookupModule",
					multiLookupConfig: multiLookupConfig
				};
			}

В примере выше независимо от того, что будет указано в multiLookupColumns, открываться будет мультилукап по колонкам ["PrimaryContact", "Country"]. Сюда нужно еще будет добавить проверку на columnName, потому что на странице может быть несколько мультилукапных полей, и условия присвоения значения параметру multiLookupColumns внутри метода (мы остаемся в контексте страницы, где лукап выведен, поэтому можно делать проверку по значениям на странице). Метод вызывается каждый раз, когда открывается модальное окно для выбора значения в справочнике.

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