2013-09-27 14 views
0

Я пишу свой первый элемент управления dijit для EPiServer. В моем шаблоне я использую dijit.form.ComboBox.Как сохранить идентификатор для dijit.form.ComboBox

Я приложил обработчик события к событию «OnChange» как так:

postCreate: function() { 
     // call base implementation 
     this.inherited(arguments); 

     // Init textarea and bind event 
     this.inputWidget.set("intermediateChanges", this.intermediateChanges); 

     this.inputWidget.set("store", this.store); 
     this.connect(this.inputWidget, "onChange", this._onInputWidgetChanged); 
    }, 

Тогда в моем обработчике событий у меня есть:

 _onInputWidgetChanged: function (e) { 
     alert(e.id); 
     this._updateValue(value); 
    }, 

Моя проблема заключается в том, что, как с типичным выпадающего меню list, я хочу сохранить значение, а не текст. Варианты в моем поле со списком выглядят так:

Значение | Текст 1 | «Тест» 2 | «Другой тест»

Проблема заключается в том, что значение передается в обработчик _onInputWidgetChanged всегда текстовое значение выпадающего список, т.е. «Тест» или «Иного тест»

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

Заранее спасибо Al

+1

Я знаю, что this.inputWidget.get ('value') будет работать для других виджетов, посмотрите, работает ли он в этом случае. – Kryptic

ответ

1

Дело о ComboBox в том, что его значение не требуется, чтобы запись в раскрывающемся меню (и, таким образом, не гарантируется один либо). Подумайте об этом как текстовое поле с autosuggest - пользователи могут использовать это меню для ускорения процесса, но значение текстового поля является свободной формой и сообщается как то, что пользователь вводит в него.

Если вы хотите, чтобы пользователи, которые будут необходимы, чтобы выбрать запись из меню, вы должны использовать FilteringSelect вместо этого, который сообщит идентификатору связанного магазина элемента (или связанную с ними option тегом value) в качестве его значения. В отличие от свободной формы ComboBox, FilteringSelect можно рассматривать как меню с функциональностью типа вперед.

+0

'dijit/form/FilteringSelect' определенно кажется более подходящим, чем' dijit/form/ComboBox' в этом случае. Отличный ответ. [Вот документация] (http://dojotoolkit.org/reference-guide/1.9/dijit/form/FilteringSelect.html) для 'FilteringSelect', и [вот скрипка, демонстрирующая ее использование] (http://jsfiddle.net/tupton/MFeXn /). Он регистрирует идентификатор (а не имя) при выборе значения. –

+0

Привет, спасибо за ваш ответ. И разрешает ли FilteringSelect тип пользователя и как он это делает? Фильтровать результаты? У меня есть список из 1500 пользователей, и я не хочу возвращать весь набор, если пользователи в списке по понятным причинам, так как пользователь набирает «al», я хочу вызвать службу отдыха, которая будет возвращать пользователей, начинающихся с «AI ». Так оно работает? – higgsy

+0

Да, с точки зрения того, как работает меню, оно работает так же, как и ComboBox. См. Примеры в документации (связанные Томасом). –

Смежные вопросы