2015-03-13 164 views
2

使用Kendo ListView,当我的页面重新加载时,如果已经做出选择,我需要让我的代码自动选择先前选择的ListView项目。我能够通过迭代数据源集合获得Kendo DataItem,但是当我做listView.select(item)时,UI不会显示任何选中的内容。选择Kendo UI ListView项目

这里是我的列表视图:

$("#listview").kendoListView({ 
     dataSource: coverages, 
     template: kendo.template($("#listTemplate").html()), 
     selectable: true, 
     change: function() { 
      var index = this.select().index(); 
      dataItem = this.dataSource.view()[index]; 

      if (selectedCoverageCode == null) { 
       selectedCoverageCode = dataItem; 
      } 

      onCodeChanged(categoryId, planId, dataItem); 
     } 
    }); 

这里是我的代码来设置以前选定的项目:

function setSelectedCoverageCode(code) { 
    var listView = $("#listview").data("kendoListView"); 
    var dataSource = listView.dataSource.view(); 
    if (listView) { 
     $.each(dataSource, function(index, item) { 
      if (item.Code === code) { 
       listView.select(item); 
       selectedCoverageCode = item; 
      } 
     }); 
    } 
} 

我需要的DOM对象不是数据源DataItem的,我相信。以上setSelectedCoverageCode函数触发Change事件,但实际元素没有在DOM中的那个点上被选中。

如何才能做到这一点,以便我可以在发生重新加载时显示已经选择的项目?建议?

谢谢

回答

5

您可以通过查找其UID来获取数据项的DOM元素。

var item = // the item out of the DataSource that you want to select 
var listView = $("#listview").data("kendoListView"); 

listView.select(listView.element.find('[data-uid="' + item.uid + '"]')); 
+0

我传入的代码是DataItem的值。我怎么才能从数据源中获得整个DataItem,只有它的价值? – Encryption 2015-03-13 17:40:47

+0

你可以循环访问数据项并找到它。使用'dataSource.view()'从数据源中获取项目数组。 – CodingWithSpike 2015-03-13 17:59:22

+0

完美。效果很好。我在这一张上留下了一片空白,谢谢。 – Encryption 2015-03-13 18:14:59