kendo网格模板js与远程数据源

时间:2014-01-17 13:29:34

标签: javascript templates grid kendo-ui jqxhr

我有一个包含远程数据源的表。在一个单元格中,我获得了userID。因为我想显示用户名而不是用户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
}

但它不能正常工作,细胞保持空白。我没有错误,但我发现在填写网格之前没有完成获取用户名的远程请求。我认为fetch的自定义函数正在等待结果返回,但似乎不是这样。

任何想法?我发现了一些示例,但都是静态本地数据。我需要一个同时具有遥控器,网格连接器和模板数据。

1 个答案:

答案 0 :(得分:0)

这可能是因为当yuo调用dataSource.fetch时会触发异步函数,这会导致运行模板的线程继续运行。根据kendo,您需要返回一个控件,然后在回调中设置该控件的内容。

使用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,但它应该工作几乎相同。