Sitecore SPEAK UI программно устанавливает выбранный элемент ComboBox

Как установить выбранный элемент компонента ComboBox в пользовательском интерфейсе Sitecore SPEAK?

Мой ComboBox заполняется компонентом QueryDataSource, который просматривает папку элементов в моей основной БД.

Я могу получить текущее выбранное значение (это текст, а не идентификатор), используя следующий код:

var value = this.MyComboBoxId.viewModel.selectedItemId();

и я ожидал, что смогу установить выбранное значение, используя:

var value = "SomeValueWhichExistsInTheList";
this.MyComboBoxId.viewModel.selectedItemId(value);

но это не похоже на работу. Документация здесь упоминает использование

rebind(items, selectedItem, selectedValue, displayFieldName, valueFieldName)

но я не хочу его заново заполнять, просто измените выбранный элемент. Мой код находится в пределах initialize метод моей модели.

редактировать

Я обнаружил, что если ComboBox не имеет DisplayFieldName или же ValueFieldName Значения, установленные в свойствах рендеринга, должны быть установлены для соответствующего itemId. DisplayFieldName и / или ValueFieldName должно быть установлено имя поля, которое вы создали - вы не можете привязать к имени элемента.

2 ответа

Решение

В initialize метод, используйте следующий код для установки значения:

app.yourQueryDataSource.on("change:hasItems", function () {
    app.yourComboBox.set("selectedValue", yourValue); 
});

Вышеуказанный подход не работает для меня, и поэтому я использовал

app.<yourcontrolid>.viewModel.rebind()

функционировать, как описано в документации к списку сайтов SPEAK, и это сработало.

Другие вопросы по тегам