Шаблон сетки кендо JS с удаленным источником данных
Я получил таблицу с удаленным источником данных. в одной ячейке я получил идентификатор пользователя. Поскольку я хочу показать имя пользователя вместо идентификатора пользователя, я сделал пользовательскую функцию шаблона:
function getUserName(pmcreator){
var user = '';
var data = ''
ds_userList.fetch(function(){
var data = this.data();
for(var i = 0, length = data.length; i < length; i++){
if(data[i].uID == pmcreator){
console.log(data[i].uLastname)
user = data[i].uLastname
}
}
});
return user
}
Но это не работает, как следует, клетки остаются пустыми. Я не получил никаких ошибок, но я вижу, что удаленный запрос на выборку имен пользователей не завершен до заполнения сетки. Я думал, что пользовательская функция fetch ожидает возвращения результатов, но это не так.
Любая идея? Я нахожу тысячи примеров, но все со статическими локальными данными. Мне нужен один с удаленным, сеткой и данными шаблона.
1 ответ
Вероятно, это связано с тем, что когда вы вызываете dataSource.fetch, он запускает асинхронную функцию, которая заставляет поток, выполняющий шаблон, продолжать работу. Согласно кендо, вам нужно будет вернуть элемент управления, а затем установить содержимое этого элемента управления в обратном вызове.
Быстрый пример с использованием категорий Northwind... Вот функция шаблона
function getDetails(e) {
$.getJSON("http://services.odata.org/V3/Northwind/Northwind.svc/Categories", null, function(data) {
var category = data.value.filter(function(item, i) {
return item.CategoryID === e.CategoryID;
});
$("#async_" + e.CategoryID).html(category[0].Description);
});
return "<div id='async_" + e.CategoryID + "'></div>";
}
http://jsbin.com/ODENUBe/2/edit
Я продолжал получать максимальный стек вызовов с рекурсивной ошибкой, когда просто пытался извлечь dataSource, поэтому я переключился на простой getJSON, но он должен работать примерно так же.