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, и это сработало.