Sitecore SPEAK UI 以编程方式设置组合框的选定项

Sitecore SPEAK UI programmatically set selected item of ComboBox

本文关键字:组合 设置 UI SPEAK 编程 方式 Sitecore      更新时间:2023-09-26

如何在 Sitecore SPEAK UI 中设置 ComboBox 组件的选定项目?

我的 ComboBox 由一个 QueryDataSource 组件填充,该组件正在查看我的核心数据库中的项目文件夹。

我可以使用以下代码检索当前选定的值(是文本,而不是 ID):

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

我希望能够使用以下方法设置所选值:

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

但这似乎行不通。此处的文档提到使用

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

但我不想重新填充它,只需更改所选项目即可。我的代码在我的模型的initialize方法中。

编辑

我发现如果 ComboBox 没有在呈现属性中设置DisplayFieldNameValueFieldName值,则必须将值设置为适当的 itemId。 DisplayFieldName和/或ValueFieldName应设置为已创建的字段的名称 - 不能绑定到项目名称。

initialize 方法中,使用以下代码设置值:

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

上述方法对我不起作用,因此我使用了

app.<yourcontrolid>.viewModel.rebind()

功能如 Sitecore SPEAK 组合框文档中所述,并且有效。