2010-11-15 10 views
6

जेक्यूजीड में मल्टीइलेक्ट केवल या तो एकाधिक चयन या एकल चयन की अनुमति देता है और शिफ्ट कार्यक्षमता वह नहीं है जो मैं शिफ्ट को करने के लिए चुनने की अपेक्षा करता हूं। मुझे यह भी पसंद नहीं है कि हमें बहुविकल्पीय के साथ comboboxes की आवश्यकता है।जेक्यूग्रीड - मल्टीइलेक्ट

बहुआयामी के लिए मैं अन्य समाधान का उपयोग कैसे कर सकता हूं?

+4

मुझे लगता है कि न तो सच में जगह अपने माल को प्रदर्शित किया जाता है। – wmitchell

+1

एसओ एक क्यूए साइट है ... आपने कोई सवाल नहीं पूछा ... एक ब्लॉग लिखें। मैं –

+1

को बंद करने की कोशिश नहीं कर रहा हूं, यह अच्छा लगता है मुझे लगता है कि इसे रखने के लिए बेहतर जगह हो सकती है। यानी Jquery प्लगइन साइट पर। उत्साह देखने के लिए यह अच्छा है, लेकिन मैं नहीं चाहता कि एसओ खुले बाजार में बदल जाए। – wmitchell

उत्तर

26

[अक्टूबर 2011] 4.0 एपीआई, सही शिफ्ट-चयन बग, सरलीकृत चयन लूप का उपयोग करने के लिए अपडेट किया गया। 4.2.0 में परीक्षण किया गया।


मेरे जैसे, आप jqgrid में एक उचित एकाधिक चयन करें की जरूरत है - जहां ctrl एक समय में एक ही पंक्ति का चयन करता है, चुनें एकाधिक पंक्तियों का चयन करता है और न ही चयन साफ ​​और 1 पंक्ति का चयन करता है - आप यह पाया है।

सबसे पहली बात: ग्रिड परिभाषा multiselect: true सेट (मैं किसी अन्य एकाधिक चयन करें विकल्प सेट नहीं किया है)

अगला:gridComplete: function() {} में grid.jqGrid('hideCol', 'cb'); सेट - इस चेक बॉक्स को छुपाता है अगर आप नहीं चाहते हैं उन्हें।

अंत में: मुख्य हिस्सा

beforeSelectRow: function (rowid, e) { 
    if (!e.ctrlKey && !e.shiftKey) { 
     $("#grid").jqGrid('resetSelection'); 
    } 
    else if (e.shiftKey) { 
     var initialRowSelect = $("#grid").jqGrid('getGridParam', 'selrow'); 
     $("#grid").jqGrid('resetSelection'); 

     var CurrentSelectIndex = $("#grid").jqGrid('getInd', rowid); 
     var InitialSelectIndex = $("#grid").jqGrid('getInd', initialRowSelect); 
     var startID = ""; 
     var endID = ""; 
     if (CurrentSelectIndex > InitialSelectIndex) { 
      startID = initialRowSelect; 
      endID = rowid; 
     } 
     else { 
      startID = rowid; 
      endID = initialRowSelect; 
     } 

     var shouldSelectRow = false; 
     $.each($("#grid").getDataIDs(), function(_, id){ 
      if ((shouldSelectRow = id == startID || shouldSelectRow)){ 
       $("#grid").jqGrid('setSelection', id, false); 
      } 
      return id != endID;       
     }); 
    } 
    return true; 
} 

समाप्ति - आशा है कि मदद करता है

+0

इसे पोस्ट करने के लिए धन्यवाद, हालांकि कोड ठीक तरह से परीक्षण किया गया था, तो यह थोड़ा और उपयोगी होगा ... –

+1

धन्यवाद, एक नोट: आपको $ ('# ग्रिड') की सभी घटनाओं को $ (इस) के साथ प्रतिस्थापित करना चाहिए। – brianray

+0

@ बाय्रॉन कोब: उत्कृष्ट समाधान, मेरे द्वारा +1। चयन ग्रिड में पाठ को भी हाइलाइट करता है। टेक्स्ट हाइलाइटिंग को कैसे रोकें? यदि शिफ्ट + अप/डाउन तीर कुंजी दबाया जाता है तो चयन से/चयन से चयनित/निकालने की अनुमति कैसे दें। – Andrus

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