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

При обеих случаях заходит в метод указанный в prepareList, так же правильно берет данные, но если запись только добавлена в деталь(пока нету в БД) при set'е поля которое указанно в list, ничего не происходит.

 

Код генерации конфига ComboBoxEdit'а:

 

var result =
{
	className: "Terrasoft.ComboBoxEdit",
	value: {bindTo: "CountryOfNumber"},
	list: {bindTo: "CountryOfNumberList"},
	prepareList: {bindTo: "isSkypeAddress"}
};
return result;

Код метода подготовки листа(prepareList):

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: "Country"
});
 
var test = this;
 
esq.addColumn("Id");
esq.addColumn("Id");
var nameColumn = esq.addColumn("Name");
 
nameColumn.orderDirection = Terrasoft.OrderDirection.ASC;
 
esq.getEntityCollection(function(result) {
	var collection = Ext.create("Terrasoft.Collection");
	if (result.success) {
		var selectedTags = result.collection;
		selectedTags.each(function(item) {
			var countryId = item.get("Id");
			var countryName = item.get("Name");
			var menuItemConfig = {
				value: countryId,
				displayValue: countryName
			};
			collection.add(countryId, menuItemConfig);
		}, this);
	}
	this.set("CountryOfNumberList", collection);
	var test = this.get("CountryOfNumberList");
}, this);
var collection = Ext.create("Terrasoft.Collection");
return collection;

PS. (https://community.terrasoft.ru/questions/lookup-pole-v-detali-sredstva-…)Данную статью видел, ничего полезного там нету 

Нравится

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

Добрый день, Василий.

Проверьте точно ли одинаковые записи приходят из запроса. Лучше сравнить все поля и значения.

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

Версия 7.2 

Подскажите пожалуйста мне нужно чтобы  "ComboBoxEdit" искал не по началу строки а по вхождению символа\символов в конечную строку.

я пытался реализовать таким способом:

className: "Terrasoft.ComboBoxEdit",

                    value: {bindTo: "FIASStreet"},

                    visible: {bindTo: "fiasStreetVisible"},

                    prepareList: {bindTo: "getFIASStreetList"},

                    list: {bindTo: "FIASStreetList"},

                    filterComparisonType: Terrasoft.StringFilterType.CONTAIN

Однако результата не дало

Нравится

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

Для поиска по части названия можно ввести перед текстом символ процента.

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

Как в ComboBoxEdit запретить редактирования текста, и оставить возможность выбирать значение только из выпадающего списка.
Пытался сделать так:

Page.cbCommunication.Editable = false;

Но реакция нулевая.

Нравится

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

Добрый день.

Реакция есть, пользователь, фактически может выбрать только предлагаемые в выпадающем списке варианты. При .Editable = false отключается подсказка и возможность сохранить введенные с клавиатуры значения.

[quote="Maxim Gritsenko"]

Добрый день.

Но вручную удалить текст все равно возможно. Необходимо полностью заблокировать эту возможность.

Илья, Combobox предоставляет выбор вариантов из справочника, неполное значение пользователь сохранить не сможет, выбрать что либо отличное от представленного в выпадающем списке - тоже.
Сделайте поле обязательным для заполнения и пользователь не сможет оставить его пустым.

Возможно, я не в полной мере Вас понимаю. Какая бизнес-задача стоит?

Есть ComboBox заполняемый програмно.

Page.cbCommunication.AddItem(new System.Guid("EF3E31D0-F36B-1410-E680-005056800029"), "Телефон");
Page.cbCommunication.AddItem(new System.Guid("EF3E31D0-F36B-1410-E680-005056800028"), "WWW");
 
Page.cbCommunication.SelectItem(new System.Guid("EF3E31D0-F36B-1410-E680-005056800029"));
Page.cbCommunication.Editable = false;

значение которого используется в дальнейшом.
Задача состоит в том чтобы при никаких манипуляциях пользователя в этом ComboBox небыло пустого значения. (в текущем варианте возможно выделить содержимое мышкой и удалить)

Илья, сделайте поле обязательным для заполнения в свойствах колонки, в настройках объекта:

В таком случае, пользователь не сможет сохранить изменения не заполнив поле.

Максим у меня немного другая ситуация:

Сделан дополнительный фильтр, и в нем выбор средств связи. Поэтому признак обязательности поля мне не подходит. Блокировка должна быть на уровне интерфейса. На скриншоте показана ситуация когда пользователь очистил поле вручную.

Илья, я, наверное, предлагаю "костыль", но все же.
Что если в глобальную переменную записывать выбор фильтра ("Телефон" или "WWW").
А на изменение поставить проверку, является ли введенное значение (в том числе и пустое) одним из этих двух вариантов:
1) Если нет, возвращаем значение из глобальной переменной.
2) Если да, то записываем текущее значение в переменную.

Пользователь сможет очищать и менять поле, но как только уберет от туда мышь (или Enter нажмет) ,то все вернется на круги своя.

Александр, я уже думал об этом костыле. Но както это не аккуратно получается. Я предполагаю что возможно изменить стиль у элемента (это же HTML). Но как и где это сделать пока не нашел.

Добрый день,

К сожалению скрипт-таски конфигурации не предполагают редактирование стилей элементов страницы. Поэтому рекомендуем воспользоваться решением предложенным Сазановым Александром.

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