Kendo Grid aktualisiert das Raster nach der Erstellung nicht mit der neu erstellten ID

Ich versuche, ein sehr einfaches Kendo CRUD-Raster mit einer Tabelle zu erstellen, die nur zwei Spalten enthält: ID und Name. Ich habe das Raster mit serverseitiger Paginierung und serverseitiger Filterung konfiguriert.

Alles scheint wie erwartet zu funktionieren, aber nachdem der neue Datensatz erstellt wurde, zeigt das Raster den neuen Datensatz an, jedoch ohne das ID-Feld. Bei der Erstellung hat die Anforderung die ID null, aber ich sende den Wert von id und das vollständige Objekt nach der Erstellung. In Beispielgittern wird das Gitter mit neuen Werten aktualisiert. Was muss ich ändern / hinzufügen, um sicherzustellen, dass die ID des neu erstellten Datensatzes auch in Grid angezeigt wird?

Es folgt die JSP:

        <script>


        $(function() {
            var dataSource =  new kendo.data.DataSource({
                transport: {
                    read: {
                        url:"http://localhost:8181/baseweb/countrylist",
                        dataType: "jsonp"
                    },
                    update: {
                        url: "http://localhost:8181/baseweb/countryupdate",
                        dataType: "jsonp"
                    },    
                    destroy: {
                        url: "http://localhost:8181/baseweb/countrydelete",
                        dataType: "jsonp"
                    }, 
                    create: {
                        url: "http://localhost:8181/baseweb/countrycreate",
                        dataType: "jsonp"
                    },                        
                    parameterMap: function(data, operation) {
                        if (operation !== "read" && data.models) {
                            return {grid_options: kendo.stringify(data.models)};
                        }
                        return {grid_options: kendo.stringify(data)};
                    }                       
                },
                serverPaging: true,
                serverFiltering: true,
                pageSize: 10,
                schema: {
                    data: "data",        
                    total: "total",                     
                    model: {
                        id: "id",
                        fields: {
                            id: { editable: false, nullable: true },
                            name: { validation: { required: true } }                                
                        }

                    }
                }                   
        });

            $("#grid").kendoGrid({
                dataSource: dataSource,
                pageable: true,
                filterable: true,
                height: 400,  
                toolbar: ["create"],                    
                columns: [
                          { field: "id", title:"Identification"}, 
                          { field: "name", title:"Country Name" },
                          { command: ["edit", "destroy"], title: "&nbsp;", width: "160px" }
                          ],
                editable: "popup"           
            });
        });

    </script> 

Parameter, der beim Erstellen an den Server gesendet wurde: _ 1380846899054 Rückruf jQuery19108827040256333442_1380846899052 grid_options {"id": null, "name": "testing"}

Als Antwort vom Server zurückgesendeter Parameter: jQuery19108827040256333442_1380846899052 ([{"id": "4028828f4180d64a014180e3bda20002", "name": "testing"}])

Ich erwarte, dass die vom Server zurückgesendete ID im Grid angezeigt wird. Ich habe in diesem Forum, in der Kendo-Dokumentation und bei Google nach einer Antwort gesucht, kann jedoch keine Lösung finden.

Was vermisse ich?

Update mit Lösung:

Jacks Antwort lieferte den Anhaltspunkt, um die Lösung zu finden. Ich habe zwei Fehler gemacht:

ein. Der Rückruf in Kendo Grid scheint zu erwarten, dass die Daten in einem "data:" - Attribut zurückgegeben werden. Ich habe die Ergebnismenge in meiner Antwort nicht als "data:" bezeichnet. b. Der Rückruf erwartet auch ein JSONArray von Objekten im data: -Attribut. Ich habe ein JSONObject gesendet, da ich nur ein Objekt erstellt habe.

Nachdem ich die Antwort geändert habe, um data: attribute und JSONArray einzuschließen, funktioniert es einwandfrei. Der Anforderungsparameter vom Client sieht folgendermaßen aus:

_   1386350196768
callback    jQuery19101285024500179227_1386350196765
grid_options    {"id":null,"name":"Ghana"}

Die bearbeitete Antwort sieht folgendermaßen aus:

jQuery19101285024500179227_1386350196765( {"data":[{"id":"2c9323ca42c8df630142c944450b0002","name":"Ghana"}]})

Hoffe, es hilft jemand anderem, da dies in der offiziellen Dokumentation nicht eindeutig dokumentiert ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage