Javascript 带远程数据源的剑道网格模板js

Javascript 带远程数据源的剑道网格模板js,javascript,templates,grid,kendo-ui,jqxhr,Javascript,Templates,Grid,Kendo Ui,Jqxhr,我得到了一个带有远程数据源的表。在一个单元格中,我得到了用户ID。因为我想显示用户名而不是用户ID,所以我创建了一个自定义模板函数: function getUserName(pmcreator){ var user = ''; var data = '' ds_userList.fetch(function(){ var data = this.data(); for(var i = 0, length = data.length; i

我得到了一个带有远程数据源的表。在一个单元格中,我得到了用户ID。因为我想显示用户名而不是用户ID,所以我创建了一个自定义模板函数:

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
}
函数getUserName(pmcreator){ var user=''; var数据=“” ds_userList.fetch(函数(){ var data=this.data(); 对于(变量i=0,长度=data.length;i 但它不能正常工作,细胞仍然是空的。我没有收到任何错误,但我看到在填写网格之前,获取用户名的远程请求没有完成。我以为fetch的自定义函数正在等待结果返回,但似乎不是这样


有什么想法吗?我找到了成千上万的例子,但都是静态的局部数据。我需要一个同时包含远程、网格内容和模板数据的函数。

这可能是因为当YOU调用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>";
}
函数getDetails(e){
$.getJSON(“http://services.odata.org/V3/Northwind/Northwind.svc/Categories,null,函数(数据){
变量类别=data.value.filter(函数(项,i){
return item.CategoryID==e.CategoryID;
});
$(“#异步#”+e.CategoryID).html(类别[0]。说明);
});
返回“”;
}

当我试图获取数据源时,我一直得到一个递归错误最大调用堆栈,所以我切换到一个简单的getJSON,但它应该工作得差不多