2011-03-04 10 views
6

निम्नलिखित कोड काम कर रहा है। समस्या अनुरोध & _dc = 1299207914646 & सीमा = 25 सर्वर के लिए भेजा प्रत्येक अनुरोध के साथ जोड़ दिया के साथ भेजा जा रहा है। मैं कुछ भी नहीं कर सकता सीमा = 25 बदलता है। आदर्श रूप में मैं सर्वर पर भेजे गए कोई अतिरिक्त पैरामीटर नहीं चाहता हूं। हालांकि मैं 10000 या कुछ सीमा तक सीमित करने में सक्षम होने के साथ ऐसा करूंगा। मैं अन्य पैरामीटर जोड़ने में सक्षम हूं लेकिन कुछ भी मैं सीमा = 25 को हटा देता हूं। मैं भी & _dc पैरामीटर से छुटकारा पाने के हालांकि मैं नहीं जानता कि क्यों यह यह एक समस्या का कारण नहीं है जोड़ दिया गया है चाहते हैं।मैं अपने JSON क्वेरी के लिए सीमा = 25 जोड़ने से ext-js रोक सकता हूं?

कोई भी विचार?

ध्यान दें: नीचे दिए गए कोड स्वरूपण के साथ कुछ अजीब समस्या?

धन्यवाद

Ext.require([ 
    'Ext.grid.*', 
    'Ext.data.*', 
    'Ext.panel.*' 
]); 
Ext.onReady(function(){ 
    Ext.regModel('Image_', { // window.Image is protected in ie6 !!! 
     fields: ['id', 'key', 'value'] 
    });  

var store = new Ext.data.JsonStore({ 
     model: 'Image_', 
     proxy: { 
      type: 'ajax', 
var store = new Ext.data.JsonStore({ 
     model: 'Image_', 
     proxy: { 
      type: 'ajax', 
      autoload: 'false', 
      url: '/couchdb/test/_design/blah/_view/by_surname2?startkey=%22r%22&endkey=%22r\u9999%22', 
      reader: { 
       type: 'json', 
       root: 'rows' 
        } 
     } 
    }); 
    store.load(); 




    var listView = new Ext.grid.GridPanel({ 
     width:425, 
     height:250, 
     collapsible:true, 
     title:'Simple ListView <i>(0 items selected)</i>', 
     renderTo: Ext.getBody(), 

     store: store, 
     multiSelect: true, 
     viewConfig: { 
      emptyText: 'No images to display' 
     }, 


     headers: [{ 
      text: 'File', 
      flex: 50, 
      dataIndex: 'value' 
     },{ 
      text: 'Last Modified', 
      flex: 35, 
      dataIndex: 'key' 
     },{ 
      text: 'Size', 
      dataIndex: 'id', 
      flex: 15, 
      cls: 'listview-filesize' 
     }] 
    }); 

    // little bit of feedback 
    listView.on('selectionchange', function(view, nodes){ 
     var l = nodes.length; 
     var s = l != 1 ? 's' : ''; 
     listView.setTitle('Simple ListView <i>('+l+' item'+s+' selected)</i>'); 
    }); 
}); 
+0

अक्षमकिंग के लिए अपने प्रॉक्सी – stambikk

उत्तर

1

अपनी दुकान की ओर सीमा प्रॉपर्टी जोड़ते हैं ...

limit:50, 

और pagesize कोशिश करने के लिए चोट नहीं सकता ....

pagesize:50 

और अगर देखना इनमें से कोई भी मदद।

संपादित करें: भी आपके प्रॉक्सी में

pageParam:undefined, 

प्रयास करें।

से है कि पिछले टुकड़ा ...

http://www.sencha.com/forum/showthread.php?118445-CLOSED-1.0.1-Ext.data.JsonStore-quot-limit-quot-param-issue

4

आप अपने स्टोर की सीमा को संशोधित कर सकते हैं जब आप की दुकान लोड पाया।

store.load({params:{limit:50}}); 

इस मामले में, मैं 50 _dc = 1299207914646 करने के लिए सीमा निर्धारित करने की पूछ रहा हूँ अद्वितीय कैश-बस्टर परम अनुरोध प्राप्त करने के लिए जोड़ा है। आप उन्हें यूआरएल में है करने के लिए नहीं करना चाहते हैं, तो आप उन्हें गलत पर disableCaching पैरामीटर की स्थापना द्वारा निष्क्रिय कर सकते हैं।

लेकिन मैं आपको सलाह देता हूं कि आप स्टोर की विधि को POST पर सेट करें और जीईटी विधि के बजाय POST का उपयोग करके पैरामीटर पास करें। इस तरह आप साफ यूआरएल प्राप्त कर सकते हैं और डेटा भेजा जा सकता है।

+1

+1 पर बस 'सीमा पैराम: अपरिभाषित' सेट करें। एक पोस्ट सुझाव देने के लिए -1। जब आप सर्वर पर डेटा संशोधित कर रहे हों तो आपको केवल एक पोस्ट का उपयोग करना चाहिए। –

0

का उपयोग कर ExtJS 4 पर _dc पैरामीटर आप सेट कर सकते हैं निकालने के लिए सीमा परम संशोधित कर सकते हैं:

noCache: false 

या केवल आपके वास्तुकार 2 उपयोग कर रहे हैं बॉक्स अचिह्नित करें।

proxy: { 
    type: 'ajax', 
    api: { 
      read: 'app/data/something.json', 
      update: 'app/data/something.json' 
     }, 
    reader: { 
     type: 'json', 
     ... 
    }, 
    writer: { 
     type: 'json', 
     ... 
    }, 
    noCache: false 
} 

संपादित करें:

8

अपने प्रॉक्सी में, सेट

limitParam: undefined, 
pageParam: undefined, 
startParam: undefined, 
noCache: false, 
+0

क्या सीमा के लिए सीमाप्रवाह, स्टार्टपाराम और पेज पैराम के लिए वैश्विक कॉन्फ़िगरेशन है, जिसे हम ओवरराइड कर सकते हैं? – sidrocks

0

Json के लिए विशेष रूप से, _dc पैरामीटर से छुटकारा पाने के, आपके प्रॉक्सी वस्तु में, config विकल्प Tharahan द्वारा दिए गए सेट : (क्षमा करें, मैंने पोस्ट की तारीख को नहीं देखा, लेकिन इसके साथ इतना समय गंवा दिया) कृपया ध्यान दें कि वैश्विक Ext.Loader.setConfig({disableCaching: false}); उप-वर्गों को प्रभावित नहीं करता है Ext.data.proxy.Server के लिए जो इस विशिष्ट विकल्प की आवश्यकता है (कम से कम सेंचा स्पर्श 2.2.0 के साथ विकास में)।

1

आप दुकान पैरामीटर

pageSize : 10 

सेट करना होगा एक टिप्पणी के जवाब में।

var store = new Ext.data.JsonStore({ 

    pageSize : 10, //10-number of json objects 

    model: 'Image_', 
    proxy: { 
     type: 'ajax', 
     autoload: 'false', 
     url: '/couchdb/test/_design/blah/_view /by_surname2?startkey=%22r%22&endkey=%22r\u9999%22', 
     reader: { 
      type: 'json', 
      root: 'rows' 
       } 
    } 
}); 
+1

क्या आप इस उत्तर का विस्तार करना चाहते हैं? –

1

आप Ext.data.proxy.Server की getParams विधि ओवरराइड कर सकते हैं: स्टोर की तरह दिखना चाहिए।

उदाहरण के लिए, अपने प्रोजेक्ट में मैं कस्टम बूलियन पैरामीटर embeddedParams जोड़ा गया है और एक अनुरोध मैं एक दुकान प्रॉक्सी में false के लिए सेट करने के लिए ExtJS पैरामीटर जोड़ना चाहते हैं तो मैं न:

/** 
* Added embeddedParams option 
*/ 
Ext.define('Ext.lib.overrides.ServerProxy', { 
    override: 'Ext.data.proxy.Server', 

    /** 
    * Add or not pagination, grouping, sorting and filtering parameters to the request. Defaults to true. 
    */ 
    embeddedParams: true, 

    /** 
    * @private 
    * Copy any sorters, filters etc into the params so they can be sent over the wire 
    */ 
    getParams: function (operation) { 
     var me = this, 
      params = {}, 
      isDef = Ext.isDefined, 
      groupers = operation.groupers, 
      sorters = operation.sorters, 
      filters = operation.filters, 
      page = operation.page, 
      start = operation.start, 
      limit = operation.limit, 
      simpleSortMode = me.simpleSortMode, 
      simpleGroupMode = me.simpleGroupMode, 
      pageParam = me.pageParam, 
      startParam = me.startParam, 
      limitParam = me.limitParam, 
      groupParam = me.groupParam, 
      groupDirectionParam = me.groupDirectionParam, 
      sortParam = me.sortParam, 
      filterParam = me.filterParam, 
      directionParam = me.directionParam, 
      hasGroups, index; 

     if (me.embeddedParams && pageParam && isDef(page)) { 
      params[pageParam] = page; 
     } 

     if (me.embeddedParams && startParam && isDef(start)) { 
      params[startParam] = start; 
     } 

     if (me.embeddedParams && limitParam && isDef(limit)) { 
      params[limitParam] = limit; 
     } 

     hasGroups = me.embeddedParams && groupParam && groupers && groupers.length > 0; 
     if (hasGroups) { 
      // Grouper is a subclass of sorter, so we can just use the sorter method 
      if (simpleGroupMode) { 
       params[groupParam] = groupers[0].property; 
       params[groupDirectionParam] = groupers[0].direction || 'ASC'; 
      } else { 
       params[groupParam] = me.encodeSorters(groupers); 
      } 
     } 

     if (me.embeddedParams && sortParam && sorters && sorters.length > 0) { 
      if (simpleSortMode) { 
       index = 0; 
       // Group will be included in sorters, so grab the next one 
       if (sorters.length > 1 && hasGroups) { 
        index = 1; 
       } 
       params[sortParam] = sorters[index].property; 
       params[directionParam] = sorters[index].direction; 
      } else { 
       params[sortParam] = me.encodeSorters(sorters); 
      } 

     } 

     if (me.embeddedParams && filterParam && filters && filters.length > 0) { 
      params[filterParam] = me.encodeFilters(filters); 
     } 

     return params; 
    } 
}); 

उपयोग:

store: Ext.create('Ext.data.Store', { 
    ... 
    proxy: { 
     ... 
     type: 'ajax', // or 'direct', 'jsonp'/'scripttag' 
     embeddedParams: false 
    } 
}) 
संबंधित मुद्दे

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