2014-01-16 64 views
0

我有一個kendo網格,其細節行填充了可編輯的彈出窗口創建模式。內的每個那些彈出創作窗口我使用的,除其他外,一個劍術自動完成構件:kendo ui requestEnd事件只觸發一次。爲什麼?

    $("#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」用於自動填充的dataTextField中。

我的問題是,在某些嵌套網格的彈出窗口創建窗口中實現了自動填充窗口小部件的所需功能之後,當我關閉該窗口並重新打開它或打開另一個嵌套網格的彈出窗口時,將觸發requestEnd事件失敗。任何意見將不勝感激。提前大膽

+0

我想這只是擊中一次或開始使您最初讀取數據的第一頁。由於服務器過濾設置爲「真」,如果你點擊分頁按鈕,它應該得到另一個命中。 我是否正確?你有一個網格,你在網格中使用劍道自動完成..這是在彈出窗口編輯..不內聯..因此,爲什麼你不使用「編輯」選項的列聲明? – Mahib

回答

0

將全名值直接插入到您的架構。你只需要實現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" 
}