2015-03-13 2 views
2

Используя Kendo ListView и, когда моя страница перезагружается, если выбор сделан, мне нужно, чтобы мой код автоматически выбирал элемент ListView, который был ранее выбран. Я могу получить Kendo DataItem путем итерации по коллекции данных, но когда я делаю listView.select (item), пользовательский интерфейс не отображает ничего как выбранное.Выберите Kendo UI ListView Item

Вот мой список вид:

$("#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

Вы можете получить элемент DOM для элемента данных, ища его UID.

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

+0

вы можете просто прокрутить элементы данных и найти их. Используйте 'dataSource.view()', чтобы получить массив элементов из источника данных. – CodingWithSpike

+0

Отлично. Работает хорошо. Благодарю вас. – Encryption

Смежные вопросы