2014-01-17 2 views
-1

У меня есть таблица с удаленным источником данных. в одной ячейке я получил идентификатор пользователя. Потому что я хочу, чтобы показать имя пользователя вместо идентификатора пользователя я сделал пользовательские функции шаблона:шаблон сетки kendo 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 ждет возвращения результатов, но это не так.

Любая идея? Я нахожу примеры примеров, но все со статическими локальными данными. Мне нужен один из них: удаленный, сетка и данные шаблона.

ответ

0

Возможно, это связано с тем, что при вызове yuo dataSource.fetch он запускает функцию async, которая заставляет поток, на котором работает шаблон, продолжать работу. Согласно кендо вам нужно будет вернуть элемент управления, а затем установить содержимое этого элемента управления в обратном вызове.

Быстрый образец с использованием Борой категории ... Вот функция шаблона

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, но он должен работать почти так же.