2013-04-17 14 views
7

Ora sto imparando a sviluppare un'app Web con kendoui, quando provo a udpare i dati della griglia con kendoWindow popup cusomizzato invece della finestra di modifica incorporata di kendo, non sapevo come inviare la richiesta al remota servire, così cerco di trovare la risposta nella documentazione ufficiale api in this page, ma c'è un nuovo problema si è verificato, spettacolo come il codice seguente:Il parametro "options" nell'origine dati di kendo

<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> 

è un esempio per illustrare come specificare l'aggiornamento come una funzione per effettuare una richiesta HTTP al servizio remoto

il mio problema è qual è il parametro 'opzioni' è quello passato a leggere e aggiornare la funzione. l'unico indizio che ho trovato sono i parametri per la funzione transport.parametermap, ma non sono sicuro che ci sia una certa relazione tra loro, quindi spero che qualcuno mi spieghi per me

risposta

5

Il parametro delle opzioni è quello che hai già scoperto. KendoUI consente di specificare una funzione invece di alcune configurazioni per i metodi di accesso ai dati della sua classe di origine dati.

Se si specifica una funzione, come potrebbe mai sapere kendoUI quando si è finito di caricare i dati? Non poteva. Quindi c'è questa variabile-opzioni che viene passata alla tua funzione (e in realtà, potrebbe avere ogni nome, ad esempio dfhajkfhd) che puoi chiamare per far sapere a kendoUI dei tuoi progressi. Per questo ha il successo e errore metodi che è possibile chiamare.

I vostri commenti, che avete copiato dai kendo-doc, dicono esattamente questo.

Oppure hai chiesto qualcosa di diverso?

+0

reale grazie per la risposta. sì, ho trovato la risposta dai documenti che ho collegato. – Beicai

1

davvero apprezzare quelli che hanno risposto a questa domanda e cercare di

ho trovato la risposta da parte inferiore delle kendo-docs che ho linkato nella domanda.

  1. creato un nuovo oggetto 'dataSource' e definire il trasporto e aggiornare leggere in esso
  2. quando dataSource pronto, utilizzare il metodo 'ottenere' di dataSource per ottenere l'elemento di dati ho bisogno di udpate da id.
  3. dati udpate utilizzare il metodo 'set' e presentare con il metodo 'sync'

l'ultimo passo è sincronizzare i dati al database di seguire è il codice che ho usato

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 
}); 
Problemi correlati