2013-04-17 17 views
7

Jetzt lerne ich mit Kendoui eine Web-App zu entwickeln, wenn ich versuche, die Rasterdaten mit cusomized Popup KendoWindow statt des Kendo integrierten Editierfenster zu udpaten, wusste ich nicht wie die Anforderung an den Remote senden dienen, so dass ich versuchen, die Antwort in offizieller aPI-Dokumentation in this page zu finden, aber es gibt ein neues Problem aufgetreten, zeigt als Folgecode:Der Parameter 'Optionen' in Kendo Datenquelle

<script> 
    var dataSource = new kendo.data.DataSource({ 
     transport: { 
      read : function (options) { 
       /* implementation omitted for brevity */ 
      }, 
      update: function (options) { 
       // make JSONP request to http://demos.kendoui.com/service/products/update 

       $.ajax({ 
        url  : "http://demos.kendoui.com/service/products/update", 
        dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests 
        // send the updated data items as the "models" service parameter encoded in JSON 
        data : { 
         models: kendo.stringify(options.data.models) 
        }, 
        success : function (result) { 
         // notify the data source that the request succeeded 

         options.success(result); 
        }, 
        error : function (result) { 
         // notify the data source that the request failed 
         options.error(result); 
        } 
       }); 
      } 
     }, 
     batch : true, 
     schema : { 
      model: { id: "ProductID" } 
     } 
    }); 

    dataSource.fetch(function() { 
     var product = dataSource.at(0); 
     product.set("UnitPrice", 20); 
     dataSource.sync(); makes request to http://demos.kendoui.com/service/products/update 
    }); 
</script> 

es ist ein Beispiel für die Veranschaulichung wie man Update als eine Funktion angibt, um eine HTTP-Anfrage an den Remote-Service zu machen

mein Problem ist, was ist der Parameter "Optionen" ist das übergeben, um die Funktion zu lesen und zu aktualisieren. der einzige Anhaltspunkt, den ich gefunden habe, ist die Parameter für transport.parametermap Funktion, aber ich bin mir nicht sicher, gibt es bestimmte Beziehung zwischen ihnen, so hoffe jemand jemand für mich zu erklären

Antwort

5

Die Optionen Parameter ist, was Sie bereits entdeckt haben. KendoUI können Sie eine Funktion anstelle einer Konfiguration für die Datenzugriffsmethoden der Datenquellenklasse angeben.

Wenn Sie eine Funktion angeben, wie könnte kendoUI jemals wissen, wann Sie mit dem Laden der Daten fertig sind? Es konnte nicht. So gibt es diese Option-Variable, die an Ihre Funktion übergeben wird (und wirklich, könnte es jeden Namen haben, zum Beispiel dfhajkfhd), die Sie anrufen können, um kendoUI über Ihren Fortschritt wissen zu lassen. Für diese hat es die Erfolg und Fehler Methoden, die Sie anrufen können.

Ihre Kommentare, die Sie aus den Kendo-Dokumenten kopiert haben, sagen genau dies.

Oder hast du etwas anderes gefragt?

+0

Echt Dank für Antwort. Ja, ich habe die Antwort aus den Dokumenten gefunden, die ich verlinkt habe. – Beicai

1

schätzen diejenigen, die diese Frage beantwortet haben und versuchen,

ich die Antwort von unten des Kendo-docs gefunden habe, die ich in der Frage verknüpft.

  1. erstellt ein neues Objekt ‚Datasource‘ und definiert das lesen und Aktualisierung Transport in ihm
  2. wenn Datasource bereit, verwendet die ‚get‘ Methode der Datasource das Datenelement i zu udpate brauche, um durch Ich würde.
  3. udpate Daten verwenden ‚set‘ Methode und legen durch ‚sync‘ Methode

der letzte Schritt, um die Daten in der Datenbank Folge synchronisieren, ist der Code i

verwendet
var updateDataSource = new kendo.data.DataSource({ 
    type: "odata", 
    transport: { 
     read: { 
      url: "/api/odata/PEMEP/TaskInformations/?" 
     }, 
     update: { 
      url: "/api/odata/PEMEP/TaskInformations/?", 
      type: "PUT", 
      dataType: "json", 
     }, 
    }, 
    schema: { 
     model: { 
      id: "_id" 
     } 
    }, 
    sync: function() { // close edit window when update request finished 

     $("#window").data("kendoWindow").close(); 
    }, 
    error: function(e) { 
     console.log(e.status); 
    } 
}); 
updateDataSource.fetch(function() { 

    var task = updateDataSource.get(id); // get dataitem by id 

    task.set("status", status); // set new values 
    task.set("retreatReason", retreatReason); 

    updateDataSource.sync(); //submit the change 
}); 
Verwandte Themen