我有一个包含远程数据源的表。在一个单元格中,我获得了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的自定义函数正在等待结果返回,但似乎不是这样。
任何想法?我发现了一些示例,但都是静态本地数据。我需要一个同时具有遥控器,网格连接器和模板数据。
答案 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,但它应该工作几乎相同。