kendo ui requestEnd事件只触发一次。为什么?

时间:2014-01-16 09:49:57

标签: kendo-ui kendo-autocomplete kendo-datasource

我有一个kendo网格,其详细信息行填充了弹出创建模式的可编辑网格。在每个弹出窗口创建窗口中,我使用了一个kendo自动完成小部件:

                    $("#labResponsibleRegistryNo").kendoAutoComplete({
                        dataSource: labResponsiblesDS,
                        dataTextField: "fullname",                            
                        template: "<div class='labResponsiblesTemplate'>\
                                        <span class='template_fullname'> #= lastname + ' ' + firstname #</span>\
                                        <div class='template_details'>\
                                            <span> ΑΜ </span>\
                                            <span class='template_data'> #= registry_no # </span>\
                                        </div>\
                                    <div>",
                        minLength: 3
                        //suggest: true,
                    });

我与labResponsiblesDS数据源绑定,如下所示:

        var labResponsiblesDS=  new kendo.data.DataSource({
            serverFiltering: true,
            transport: {
                read: {
                    url: "api/workers",
                    type: "GET",
                    data: {},
                    dataType: "json"
                },
                parameterMap: function(data, type) {
                    if (type === 'read') {
                        data["worker"] = data.filter.filters[0].value;
                        delete data.filter;
                    }
                    return data;
                }
            },
            schema: {
                data: "data",
                total: "total"
            },
            requestEnd: function(e) {
                console.log("labResponsiblesDS requestEnd", e);
                if(e.response.data.length > 0){
                    var results_no = e.response.data.length;
                    for(var i=0;i<results_no;i++){
                        e.response.data[i].fullname = e.response.data[i].lastname + " " + e.response.data[i].firstname;
                    }
                }
            }
        });

在labResponsiblesDS的请求结束事件中,我在服务器返回的每个结果中创建一个额外的字段“fullname”,它是返回“lastname”和“firstname”的两个字段的串联。 “fullname”用于autocomplete的dataTextField。

我的问题是,在一些嵌套网格的弹出窗口创建窗口中实现自动完成窗口小部件的理想功能后,当我关闭该弹出窗口并重新打开它或打开另一个嵌套网格的弹出窗口时,requestEnd事件将触发FAILS。任何建议都会非常感激。提前预订

1 个答案:

答案 0 :(得分:0)

将fullname值直接插入到架构中。您只需要将schema.data实现为匿名函数,并在那里形成全名:

schema: {
    data: function(data) {
        for (var i = 0; i < data.length; ++i) {
            data[i].fullname = data[i].lastname + " " + data[i].firstname;
        }
        return data;
    },
    total: "total"
}