2012-11-22 6 views
5

मैं इस परिदृश्य है: मेरा पेज मेंKendoUI: बटन क्लिक करने के बाद प्रथम पृष्ठ पर ग्रिड डेटा को रीसेट

मैं एक ग्रिड (पृष्ठांकन के साथ) एक डेटा स्रोत से घिरा। जब मैं "निकालें" बटन पर क्लिक करता हूं तो ग्रिड पॉप्युलेट हो जाता है (एक वेब सेवा के माध्यम से पेजिनेटेड डेटा पढ़ना)। फिर मैं ग्रिड पेजिनेशन के माध्यम से "पेज 2" ​​का चयन करता हूं। डेटा वापस करने के लिए फिर से वेब सेवा का आह्वान किया जाता है।

अब: मैं पहले पृष्ठ पर डेटा पुनः लोड करने और दिखाने के लिए "निकालें" पर क्लिक करना चाहता हूं। मुझे यकीन नहीं है कि सबसे अच्छा तरीका कौन सा है।

मैं सेवा (इनपुट पैरामीटर के साथ) में केवल एक कॉल करना चाहता हूं और ग्रिड में पेजिनेशन इंडेक्स रीसेट किया गया है।

मैं अब निम्नलिखित कोड का उपयोग कर रहा:

$("#btnExtract").bind("click", function(e) { 
    var grid = $("#section-table").data("kendoGrid"); 
    grid.dataSource.read({parameter: "value"}); 
    grid.dataSource.page(1); 
}); 

लेकिन यह वास्तव में सेवा करने के लिए दो कॉल करता है।

उत्तर

14

यदि आप सर्वर साइड पेजिंग कर रहे हैं तो यह grid.dataSource.page(1) करने के लिए पर्याप्त होना चाहिए क्योंकि यह read को ठीक उसी तरह से लागू करेगा जैसा आपने पहले ही महसूस किया है।

+0

धन्यवाद, लेकिन अगर मैं टी अनुरोध के साथ पैरामीटर भी भेजना चाहता हूं? –

+0

आप एक नया डेटा स्रोत यूआरएल बनाकर 'grid.data (" kendoGrid ") पैरामीटर जोड़ सकते हैं। DataSource.transport.options.read.url' प्रॉपर्टी। –

+0

यह काम करता है। सरल समाधान के लिए धन्यवाद –

0

अपने केंडो ग्रिड डेटासोर्स रीड ऑपरेशन के लिए पैरामीटर मैप को परिभाषित करें, यह नीचे दिखाए गए परिवहन तत्व में आता है। फिर grid.dataSource.page (1) पर कॉल करें, यह पढ़ा जाएगा और आपको सॉर्ट किया जाना चाहिए।

new kendo.data.DataSource({  
transport: { 
        read: { 
          // ur read 
          }, 
      parameterMap: function (o, operation) { 
         var output = null; 
         switch (operation) { 
            case "create": 
            break; 
           case "read": 
            output = {parameter: "value"}; 
            break; 
           case "update": 
            break; 
           case "destroy": 
            break; 
         } 
        return output;    }}}); 
+0

क्या इसका मतलब है कि मुझे बाहरी पैरामीटर में इनपुट पैरामीटर ऑब्जेक्ट (मेरा मतलब '{पैरामीटर: "मान"}') परिभाषित करना है, कहीं भी वैश्विक रूप से सुलभ, कोड में? मैं सिर्फ "read()" का उपयोग कर रहा था क्योंकि मैं पैरामीटर मैप में इनपुट अपडेट कर सकता था बस इसमें डेटा भेज रहा था। –

2

केवल एक ही अनुरोध आप डेटा स्रोत का query विधि का उपयोग करना चाहिए करने के लिए।

dataSource.query({ page: 5, pageSize: 20, sort: { field: "orderId", dir: "asc" } }); 
11

किसी कारण से, पेज 1 पर सेट किया जाता है और यदि आप इसे 1 के लिए फिर से सेट: यह आप की तरह फिल्टर/पेज के लिए विभिन्न तरीकों का संयोजन बनाने के लिए/प्रकार आदि

उदाहरण के लिए अनुमति देता है , यह एक पढ़ा जाएगा। यदि यह 1 से कम कुछ है और आप इसे 1 पर सेट करते हैं, तो यह केवल उस पृष्ठ पर जाएगा और पढ़ा नहीं जाएगा। आप उपयोग कर रहे हैं

$("#btnExtract").bind("click", function(e) { 
    var grid = $("#section-table").data("kendoGrid"); 
    grid.dataSource.query({ page: 1, parameter: "value"}); 
}); 

:

if (grid.dataSource.page() != 1) { 
    grid.dataSource.page(1); 
} 
grid.dataSource.read({parameter: "value"}); 
+1

यह उत्तर मेरे लिए काम करता था और समाधान के रूप में चिह्नित टिप्पणी नहीं थी। – mgmedick

+2

निश्चित रूप से सही उत्तर – Fabio

+0

'grid.dataSource.read ({पैरामीटर:" मान "}) को फेंक दें; 'किसी अन्य' ब्लॉक में पृष्ठ पर नहीं होने पर आपके सर्वर पर डबल हिट को रोकने के लिए। – MalibuCusser

2

पृष्ठ संख्या पारित करने के लिए उपयोग करें DataSource.query() विधि और अपने कस्टम इनपुट पैरामीटर: तो आपके सवाल का जवाब देना, तो आप इस कोड का उपयोग कर सकते सर्वर साइड पेजिंग और सॉर्टिंग के बाद आपको उस जानकारी को भी शामिल करने की आवश्यकता हो सकती है:

$("#btnExtract").bind("click", function(e) { 
    var grid = $("#section-table").data("kendoGrid"); 

    var queryParams = { 
     page: 1, 
     pageSize: grid.dataSource.pageSize(), 
     sort: grid.dataSource.sort(), 
     group: grid.dataSource.group(), 
     filter: grid.dataSource.filter(), 
     parameter: "value" 
    }; 

    grid.dataSource.query(queryParams); 
}); 
संबंधित मुद्दे