【问题标题】:Sitecore SPEAK UI set selected row of ListControlSitecore SPEAK UI 设置 ListControl 的选定行
【发布时间】:2015-05-09 16:02:16
【问题描述】:

我有一个 SPEAK UI 对话框,其中 ListControl 绑定到 custom JSON datasource。这有效,并且 ListControl 已正确填充。我的 JSON 数据如下所示:

[
  {
    "itemId":"{BA26159A-194D-4A3C-9D1A-DA9472F11BE0}",
    "selected":true
   },
   {
     "itemId":"{E651D0CD-0E7E-4903-8E26-0D1D5A168E69}",
     "selected":false
   },
   {
     "itemId":"{E651D0CD-0E7E-4903-8E26-0D1D5A168E70}",
     "selected":false
   }
]

有没有办法确保在加载对话框时选择 ListControl 的相关行 ("selected":true)?

【问题讨论】:

    标签: sitecore sitecore-speak-ui


    【解决方案1】:

    您可以像这样设置 ListControl 的选定项 ID:this.MediaResultsListControl.viewModel.set({selectedItemId:"ITEMID"})

    (在控制台中调试时使用 Sitecore.Speak.app 代替这个)

    如果你调用this.MediaResultsListControl.viewModel.selectedItemId()你可以看到选中的item已经被上面的方法设置好了。

    想知道页面加载时,是否可以使用此方法从页面代码中手动设置 ListControls 选定项 id?

    查看列表控件的 JS。它在单击一行时调用它。想知道你是否可以替换它来触发选定的行?

    selectRow: function (row, rowModel) {
      this.$el.find(".active").removeClass("active");
      row.addClass("active");
    
      this.model.set("selectedItem", rowModel);
      this.model.set("selectedItemId", rowModel.get("itemId"));
    },
    

    【讨论】:

    • 好的,谢谢,我会试一试。我目前有这样的代码设置 selectedItemId 像这样app.JsonList.set('SelectedItemId', data) 这似乎将值保留在控件上,但不突出显示该行。
    • 是的,我自己也遇到了同样的问题。想知道它是否是 SPEAK 错误,还是在控件的生命周期中为时已晚?
    • 添加评论以回答
    • 我不明白我应该把这段代码放在哪里?在我的 JsonDatasource.js 中还是在我的对话框的 PageCode 引用的脚本中?
    • Id 将它放在 pageCode 中,以便在您从 JSON 数据源检索数据之后。调用代码设置List Control的选中项索引
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多