2016-02-27 41 views
5

我真的很努力地使用Controller服務加載jsGrid。我無法做到正確。通過在MVC中調用Controller/WebService加載jsGrid

我甚至試過了jsGrid站點演示中的示例代碼,但是也沒有工作,要麼它拋出錯誤在!this.data.length或網格根本不加載。

我每次嘗試使用下面的代碼時都沒有收到數據。

欣賞有人能幫忙。

這是怎麼了加載jsGrid:

$(element).jsGrid({ 
    height: 300, 
    width: "100%", 
    filtering: true, 
    sorting: true, 
    paging: true, 
    autoload: true, 
    pageLoading: true, 

    controller: { 
     loadData: function (filter) { 
      $.ajax({ 
       type: "GET", 
       url: "../Common/GetData", 
       data: filter, 
       dataType: "JSON" 
      }); 
     } 
    }, 
    pageSize: 10, 
    pageButtonCount: 5, 
    pageIndex: 1, 

    noDataContent: "No Record Found", 
    loadIndication: true, 
    loadIndicationDelay: 500, 
    loadMessage: "Please, wait...", 
    loadShading: true, 

    fields: [ 
     { name: "Name", type: "textarea", width: 150 }, 
     { name: "Age", type: "number", width: 50 }, 
     { name: "Address", type: "text", width: 200 }, 
     { name: "Country", type: "select" }, 
     { 
      name: "", type: "text", width: 50, sorting: false, filtering: false, 
      itemTemplate: function (value) { 
       return '<div class="edit-container"><a class="edit-custom-field-link">Edit</a><div class="sort-icon-container"><div class="up-arrow-icon"></div><div class="down-arrow-icon"></div></div></div>'; 
      } 
     } 
     //{ name: "Married", type: "checkbox", title: "Is Married", sorting: false } 
     //,{ type: "control" } 
    ] 
}); 
+1

別t忘記使用:autoload:true,如果不是loadData將不會被調用 – mauronet

回答

6

您應該使用的承諾,同時加載數據,

loadData: function(filter) { 

    return $.ajax({ 
     type: "GET", 
     url: "../Common/GetData", 
     data: filter, 
     dataType: "JSON" 
    }) 

} 

return $.ajax({})不會返回的承諾。是的,謝謝!

+0

是否可以使用pageLoading = true選項加載jsGrid,因爲它接受參數的方式是loadData:function(filter){return {data: (想要使用服務調用),itemsCount :(使用服務調用對象噸)}。不知道如何將服務調用與數據對象綁定 –

+2

該實際工作嗎?我無法獲取網格加載我只是讓網格出現並說'找不到',即使我可以看到我的JSON被請求併發送回來,並且我在所有事件中都有控制檯日誌記錄,並且它們確實出現..這是如此非常令人沮喪,因爲我無法弄清楚如何調試它。當我瀏覽底層的JQuery代碼時,它對我來說並不重要。 AAAARRRRRGGH! –

+0

類似的代碼在這裏:http://stackoverflow.com/questions/35907482/data-not-populating-the-table-created-using-jsgrid –

0

要返回一個承諾試試這個代碼loadData:

  loadData: function() { 
      var d = $.Deferred(); 

      $.ajax({ 
       type: 'GET', 
       url: '../Common/GetData', 
       dataType: "json", 
       success: function (data) { 
        d.resolve(data); 
       }, 
       error: function(e) { 
        alert("error: " + e.responseText); 
       } 
      }); 

      return d.promise(); 
     } 
4

我也正在和JSGrid問題。我用下面的代碼片段(如一些人所建議):

`

loadData: function(filter) { 
    console.log("LoadData called....") 
    var d = $.Deferred(); 
    $.ajax({ 
     type: "GET", 
     url: "/secure/msgitems", 
     data: filter 
    }).done(function(response) { 
     console.log( response); 
     d.resolve(response); 
     return; 
    }); 
return d.promise(); 
}, 
}, 

`

我能看到的結果回來了,但我的jsGrid不停地嘔吐。原來,服務器必須按以下格式返回數據:

{
data: [items], itemsCount: amountOfItems }

這裏就是開發商討論這個話題:https://github.com/tabalinas/jsgrid/issues/35

看來工作... FWIW