2015-03-13 130 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