2016-02-27 12 views
5

Sto davvero lottando per caricare jsGrid utilizzando il servizio Controller. Non sono in grado di farlo correttamente.Caricamento jsGrid chiamando Controller/WebService in MVC

Ho anche provato il codice di esempio dalla demo del sito jsGrid ma anche questo non ha funzionato o genera errore a! This.data.length o grid non si carica affatto.

Non ottengo alcun dato ogni volta che provo ad usare il codice sottostante.

Apprezzo se qualcuno può aiutare.

Ecco come sto caricando il 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

Don' t dimenticare di usare: autoload: true, se non loadData non verrà chiamato – mauronet

risposta

6

Si dovrebbe usare promesse durante il caricamento dei dati,

loadData: function(filter) { 

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

} 

return $.ajax({}) fa ritorno una promessa. Si Grazie!

+0

È possibile caricare jsGrid utilizzando l'opzione pageLoading = true, coz il modo in cui accetta il parametro loadData: function (filter) { return {data: (si desidera utilizzare la chiamata di servizio), itemsCount: (utilizzare la chiamata di servizio objec t)}. Non sai come associare la chiamata di servizio con l'oggetto dati –

+2

HA FATTO QUESTO EFFETTIVAMENTE FUNZIONARE? Non riesco a caricare la griglia Ho appena ricevuto la griglia e ho detto 'non trovato' anche se posso vedere il mio JSON essere richiesto e inviato indietro e ho la registrazione della console in tutti i miei eventi e vengono visualizzati .. Questo è così molto frustrante perché non riesco a capire come eseguirne il debug. Quando passo il codice JQuery sottostante non ha senso per me. AAAARRRRRGGH! –

+0

Codice simile qui: http://stackoverflow.com/questions/35907482/data-not-populating-the-table-created-using-jsgrid –

0

Per tornare una promessa provare questo codice per 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

anch'io stavo avendo problemi con JSGrid. Stavo usando il seguente frammento (come alcuni hanno suggerito):

`

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(); 
}, 
}, 

`

ho potuto vedere i risultati a tornare, ma il mio jsGrid continuato a vomitare. Si scopre che il server deve restituire i dati nel seguente formato:

{
data: [items], itemsCount: amountOfItems }

Qui è dove lo sviluppatore discute questo argomento: https://github.com/tabalinas/jsgrid/issues/35

Sembra funzionare ... FWIW