2017-06-19 48 views
0

Im正在從數據庫更新網格值。並將CS頁面的值傳遞給JSgrid。刪除,編輯與db完美配合。但搜索後網格沒有得到更新。我可以將搜索值傳遞給CS頁面,並從DB獲取相應的搜索值。但是這些值沒有被JSgrid更新。JSGrid未獲取搜索值更新

 var Status;   
    var lastPrevItem; 
    var clients =<%=gridData%> 

    $("#jsGrid").jsGrid({ 
     width: "100%", 
     height: "450px", 

     filtering: true, 
     //filterable:true, 
     //inserting: true, 
     autosearch: true, 
     editing: true, 
     sorting: true, 
     paging: true, 
     autoload: true, 
     pageSize: 25, 
     pageButtonCount: 5, 
     deleteConfirm: "Do you really want to delete the Department?", 

     controller: //db, 
      { loadData: function (filter) { 
        if (filter["ID"] != "" || filter["Name"] != "") { 
        return $.ajax({ 
         type: "POST", 
         async: true, 
         processdata: false, 
         paging: true, 
         contentType: "application/json; charset=utf-8", 
         url: "myurl/mycsmethod", 
         data: "{'ID':'" + filter["ID"] + "','Name':'" + filter["Name"]+ "'}",  

         success: function (data) { 

         }, 
         error: function (XHR, errStatus, errorThrown) { 
          var err = JSON.parse(XHR.responseText); 
          errorMessage = err.Message; 
          alert(errorMessage); 
         } 
        }); 
        } 
      }, 
      updateItem: function (clients) { 
       var result = $.Deferred(); 
       alert(result); 
       var ajaxDeferred = $.Deferred().reject(); 
       alert(ajaxDeferred); 
       ajaxDeferred.done(function (updatedItem) { 
        result.resolve(updatedItem); 
       }).fail(function() { 
        result.resolve(lastPrevItem); 
       }); 
       return result.promise(); 
      }, 
      }, 

     onItemDeleting: function (args) { 
      //its working fine 
     }, 
     onItemEditing: function (args) { 
      //its working fine 
     }, 

     data: clients, 

     fields: [ 
      { type: "control" }, 
      { name: "ID", visible: false, width: 0, validate: "required" }, 
      { name: "Name", visible: false, width: 0, validate: "required" }, 
     ] 
    }); 

我想用jsgrid更新<%= gridData%>,一旦搜索按鈕被觸發。

+0

'lodaData'應該總是返回一個承諾或靜態數組。在你的工作示例中,你實現了客戶端過濾。如果你想實現服務器端過濾(就像你上面的問題一樣),只需要返回'$ .ajax'(不是有條件的)。過濾器會調用'loadData',它將發送過濾參數給服務器,由'$ .ajax'返回,promise將被過濾的數據解析,並且它應該按預期工作。 – tabalin

回答

0
loadData: function(filter) { 
        return $.grep(clients, function(client) { 
         return (!filter["DeptID"] || client["DeptID"].indexOf(filter["DeptID"]) > -1) 
          && (!filter["DeptName"] || client["DeptName"].indexOf(filter["DeptName"])>-1) 
          && (!filter["Status"] || client["Status"].indexOf(filter["Status"]) > -1) 
        });}, 

updateItem: function (updatingClient) { 
        var result = $.Deferred(); 
        alert(result); 
        var ajaxDeferred = $.Deferred().reject(); 
        alert(ajaxDeferred); 
        ajaxDeferred.done(function (updatedItem) { 
         result.resolve(updatedItem); 
        }).fail(function() { 
         result.resolve(lastPrevItem); 
        }); 
        return result.promise(); 
       }, 

它現在與上面的代碼,friends.But工作,但如果有什麼,我需要改進我的代碼,請讓我知道。