【问题标题】:kendo grid template js with remote datasource带有远程数据源的剑道网格模板js
【发布时间】:2014-02-06 20:45:21
【问题描述】:

我有一个带有远程数据源的表。在一个单元格中,我得到了用户 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
}

但它不能正常工作,单元格保持空白。我没有收到任何错误,但我看到在填写网格之前未完成获取用户名的远程请求。我以为 fetch 的自定义函数正在等待结果返回,但事实并非如此。

有什么想法吗?我找到了数以千计的示例,但都包含静态本地数据。我需要一个同时具有远程、网格内容和模板数据的设备。

【问题讨论】:

    标签: javascript templates grid kendo-ui jqxhr


    【解决方案1】:

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

    使用罗斯文类别的快速示例... 这是模板函数

    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

    当我尝试获取数据源时,我不断收到递归错误最大调用堆栈,因此我切换到了一个简单的 getJSON,但它的工作方式应该几乎相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2015-04-26
      • 1970-01-01
      相关资源
      最近更新 更多