2013-05-14 4 views
10

इम एक नहीं बल्कि कष्टप्रद बग (?) केंडो यूआई डेटा स्रोत में सामना कर बुलाया हो रही। जब मैं एक कस्टम समारोह पारित मेरी परिवहन परकेंडो डेटा स्रोत परिवहन कस्टम नहीं समारोह

मेरे अद्यतन विधि कहा जाता है नहीं हो रही है, लेकिन अगर मैं सिर्फ यह URL दें यह काम करता है।

यह काम करता है:

... 
transport: { 
    update: { url: "/My/Action" } 
} 
... 

यह

... 
transport: { 
    update: function(options) { 
     var params = JSON.stringify({ 
      pageId: pageId, 
      pageItem: options.data 
     }); 
     alert("Update"); 
     $.ajax({ 
      url: "/My/Action", 
      data:params, 
      success:function(result) { 
       options.success($.isArray(result) ? result : [result]); 
      } 
     }); 
    } 
} 
... 

समारोह लागू नहीं हो रही है नहीं करता है, लेकिन एक ajax अनुरोध वर्तमान पृष्ठ URL के लिए बना है, और मॉडल डेटा तैनात किया जा रहा है , जो कि अजीब है। मुझे एक बग की तरह लगता है।

एकमात्र कारण मुझे इसकी आवश्यकता है, क्योंकि केंडो यह नहीं समझ सकता कि मेरी अपडेट एक्शन केवल एक ही तत्व लौटाती है, न कि सरणी - इसलिए, क्योंकि मैं केवल अपनी एपीआई को संतुष्ट नहीं करना चाहता केंडो, हालांकि मैं इसे दूसरी तरफ करता हूं।

किसी को भी इस अनुभव किया है, और सही दिशा में मुझे बात कर सकते हैं?

मैं भी schema.parse उपयोग करने की कोशिश, लेकिन यह है कि जब अद्यतन विधि बुलाया जा रहा था लागू नहीं हुए।

मैं myDs.sync() का उपयोग अपने डेटा स्रोत सिंक करने के लिए।

+0

मैं एक ही समस्या है, यकीन नहीं अगर यह तय हो गई है ... – SamJackSon

उत्तर

15

वर्क्स documentation से डेमो के साथ के रूप में उम्मीद: http://jsbin.com/omomes/1/edit

+0

इस प्रयास करें::

var dataSource = new kendo.data.DataSource({ transport: { read: function(options) { $.ajax({ url: "http://demos.kendoui.com/service/products", dataType: "jsonp", success: function(result) { options.success(result); } }); }, update: function(options) { alert(1); // 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", product.UnitPrice + 1); dataSource.sync(); }); 

यहाँ एक लाइव डेमो है http : //jsbin.com/oguxac/1/ - केवल अंतर यह है कि मैं पढ़ने के लिए एक कस्टम फ़ंक्शन का उपयोग नहीं कर रहा हूं। शायद समस्या है। यदि आप कंसोल देखते हैं, तो केंडो में एक त्रुटि फेंक दी जाती है। – Jeff

+3

यही समस्या है। आपको पढ़ने के लिए एक कस्टम फ़ंक्शन का उपयोग करने की आवश्यकता है() साथ ही। –

+0

लेकिन यह आवश्यक क्यों है? यदि ऐसा है, तो क्या मुझे एक विधि में परिणाम बनाने के लिए अपना स्वयं का फ़ंक्शन प्रदान किए बिना अद्यतन विधि में क्या करने की आवश्यकता है, ऐसा करने का एक आसान तरीका है? – Jeff

संबंधित मुद्दे