2016-05-11 8 views
0

Ich arbeite an einer Web-App, die ein Raster mit einigen Daten füllen muss. Ich habe eine Schaltfläche mit einer onClick-Methode verdrahtet, die ein neues modales Fenster für das Raster öffnet, das angezeigt werden soll. Ich benutze einen jquery Post-Aufruf an den Controller. Allerdings kann ich die JSON-Daten nicht abrufen und sie meiner Variablen zuweisen.Füllen eines Rasters mit Kendo js

Mein Code ist wie folgt:

var grid_ds; 
$.post('${ctx}/class/student/details?studentId=${student.studentId}', function(data){ 




}, 'json'); 

$('#student_grid').kendoGrid({ 
dataSource: grid_ds, 
columns: [ 
{field: "studentName", title: "Student Name"}, 
{field: "studentClass", title: "Class"} 
], 
dataBound: function() { 
    emptyGrid($('#student_grid')); 
} 
}).data('kendoGrid'); 

Mein Controller json sendet. Ich kann die Daten sehen. Wie sollte ich die json-Daten zu grid_ds und student_grid zuweisen und die Werte im Raster auffüllen?

+0

Können Sie den vollständigen Code für das Grid bereitstellen? Wo definierst du 'grid_ds'? Wo ist 'emptyGrid' definiert? – whipdancer

+0

Das Abrufen von Daten per Post ist keine gute Übung, wenn Sie Get verwenden, können Sie Kendo Datasource direkt verwenden, nur eine Meinung. –

Antwort

0

Sie könnten versuchen, eine kendo.data.DataSource mit einer benutzerdefinierten transport Funktion wie folgt:

$('#student_grid').kendoGrid({ 
    dataSource: dataSource = new kendo.data.DataSource({ 
     transport: { 
      read: function (e) { 
       $.post('${ctx}/class/student/details?studentId=${student.studentId}', 'json') 
        .done(function (data) { 
         e.success(data); 
        }); 
      } 
     } 
    }), 
    columns: [ 
     { 
      field: "studentName", 
      title: "Student Name" 
     }, 
     { 
      field: "studentClass", 
      title: "Class" 
     } 
    ]}); 

Ich denke, das Problem mit sein kann, wie die Daten sind zu holen. Da $.post ein Ajax-Anruf ist, der außerhalb des Bandes arbeitet, ist grid_ds höchstwahrscheinlich nicht definiert, wenn es an die .kendoGrid()-Funktion übergeben wird.

Ich konnte die Konfigurationseigenschaft dataBound, die Sie in Ihrer Frage in der kendo.ui.Grid angeben, nicht finden. Wissen Sie, woher diese Konfigurationseinstellung stammt?

+0

Gut. Das hat bei mir nicht funktioniert. Jetzt ging es nicht einmal zum Controller. Der Anruf wurde nicht an den Controller selbst gesendet. – Sri