kendo ui requestEnd событие срабатывает только один раз. Почему?

У меня есть сетка кендо, ряды деталей которой заполнены редактируемыми сетками режима создания всплывающих окон. Внутри каждого из этих всплывающих окон я использую, среди прочего, виджет автозаполнения 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;
                    }
                }
            }
        });

В событии End запроса labResponsiblesDS я создаю в каждом из результатов, возвращаемых сервером, дополнительное поле «fullname», которое является объединением двух возвращенных полей «lastname» и «firstname». "fullname" используется в dataTextField автозаполнения.

Моя проблема в том, что после достижения желаемой функциональности виджета автозаполнения внутри всплывающего окна создания некоторой вложенной сетки, когда я закрываю это всплывающее окно и снова открываю его или открываю всплывающее окно другой вложенной сетки, событие requestEnd НЕ запускается. Любой совет будет очень признателен. Заранее спасибо


person user1221271    schedule 16.01.2014    source источник
comment
Я предполагаю, что он ударил только один раз или изначально заставил вас прочитать данные для первой страницы. Поскольку для фильтрации сервера установлено значение true, если вы нажмете кнопку разбивки на страницы, она должна получить еще один удар. я правильно понимаю ?? у вас есть сетка, и вы используете автозаполнение кендо в сетке .. которое находится в редактировании всплывающих окон .. не встроено .. в этом почему вы не используете опцию редактора в объявлении столбца ??   -  person Mahib    schedule 16.01.2014


Ответы (1)


Вставьте значение полного имени прямо в вашу схему. Вам просто нужно реализовать 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"
}
person JoshBramlett    schedule 16.01.2014