2009-11-19 13 views
6

मैं jqGridjqGrid: क्या कॉलम की पुनरावृत्ति के लिए कोई घटना है?

$grid = jQuery("#list").jqGrid({ 
    sortable:true, 
    ... 
}); 

में स्तंभ पुनर्व्यवस्था सुविधा का उपयोग कर रहा हूँ वहाँ एक घटना है कि कॉलम के बाद आग को फिर से आदेश दिया जाता है? यदि वहां है, तो मैं इसे नहीं देख सकता!

अग्रिम

उत्तर

1

demo jqGrid sortable प्लगइन पंक्तियों के लिए धन्यवाद का कहना है कि sortable विजेट से सभी उपलब्ध विकल्पों और घटनाओं के लिए इस्तेमाल किया जा सकता है।

यदि यह सही है तो आपको update event का उपयोग करके ठीक होना चाहिए जो सॉर्ट करने योग्य प्लगइन का हिस्सा है।

+0

धन्यवाद ... मैंने सोचा था कि वह भी वादा कर लग रहा था। हालांकि मैं अभी भी यह नहीं समझ सकता कि मैं इस घटना के लिए एक हैंडलर कैसे सेट कर सकता हूं। मैंने अपडेट जोड़ने का प्रयास किया है: फ़ंक्शन (ईवेंट, ui) {अलर्ट (""); } जब मैं ग्रिड शुरू करता हूं, और $ ("# सूची")।बांधें ("sortupdate", फ़ंक्शन() {अलर्ट ("");}); ग्रिड के प्रारंभ होने के बाद । लेकिन कोई भी मेरे लिए काम नहीं करता ... कोई संकेतक? – Adam

2

यह काम करता है: '। Ui-jqgrid-hbox तालिका'

[संपादित]

$ (, $ ('#' + gridId) .parents ('। Ui-jqgrid-व्यू')) .bind ("sortstop", function() {onGridColumnReordered (gridId)})

जहां आपको अपना ग्रिड आईडी पास करना होगा और उस पर GridColumnRordord फ़ंक्शन को बनाना होगा।

+0

मेरे लिए बिल्कुल काम नहीं किया। ऐसा लगता है कि किसी भी घटना बाध्यकारी सफलतापूर्वक होता है। –

3

श्री डब्ल्यू के जवाब पढ़ रहे हैं और एक सा प्रयोग के बाद पाया जाता है, वहाँ काम करने के लिए एक बेहतर तरीका है:

$("#gbox_" + gridid).bind("sortstop", function(){ 
    // you can even get the current permutation! 
    // Yes, it looks like you may be grabbing the remapColumns function. 
    // You're not, you get an array of integers back. 
    grid.jqGrid("getGridParam", "remapColumns"); 
}) 

का आनंद लें!

9

) अद्यतन में grid.jqueryui.js में एक कॉल (jqGrid v3.8.2)() ts.p.sortable.update (के रूप में jqGrid message board पर चर्चा की है, इसलिए नहीं है:

jQuery('#gridId').jqGrid({ 
    ..., 
    sortable: { update: function(permutation) { 
     alert('save permutation somewhere'); 
    }, 
    ... 
}); 

हालांकि , कृपया ध्यान दें कि आपके कॉलबैक में पारित सरणी वर्तमान कॉलम ऑर्डर के सापेक्ष होगी। दूसरे शब्दों में, एकाधिक स्तंभों को स्थानांतरित करने के बाद सरणी को सहेजने से वांछित परिणाम नहीं मिलेंगे।

var defaultColNames = [ 'Alpha', 'Beta', 'Gamma' ]; 
var defaultColModel = [ 
    { name: 'alpha', index: 'alpha' }, 
    { name: 'beta', index: 'beta' }, 
    { name: 'gamma', index: 'gamma' } 
]; 

jQuery('#gridId').jqGrid({ 
    ..., 
    colNames: defaultColNames, 
    colModel: defaultColModel, 
    sortable: { update: function(relativeColumnOrder) { 
     var grid = jQuery('#gridId'); 

     var defaultColIndicies = []; 
     for(var i=0; i<defaultColModel.length; i++) { 
      defaultColIndicies.push(defaultColModel[i].name); 
     } 

     if(grid.getGridParam('treeGrid')) { 
      // tree grid mode adds 5 extra columns 
      defaultColIndicies = defaultColIndicies.concat(['level','parent','isLeaf','expanded','loaded']); 
     } 

     var columnOrder = []; 
     var currentColModel = grid.getGridParam('colModel'); 
     for(var j=0; j<relativeColumnOrder.length; j++) { 
      columnOrder.push(defaultColIndicies.indexOf(currentColModel[j].name)); 
     } 

     // columnOrder now contains exactly what's necessary to pass to to remapColumns 
     // now save columnOrder somewhere 
     globalColumnOrder = columnOrder; 
    }, 
    ... 
}); 

// grab saved column order from cookie or something 
var globalColumnOrder = [0,1,2]; 

// append to array if tree grid enabled 
if(jQuery('#gridId').getGridParam('treeGrid')) { 
    // tree grid mode adds 5 extra columns 
    for(var k=defaultColNames.length; k<(defaultColNames.length+5); k++) { 
     globalColumnOrder.push(k); 
    } 
} 

// restore column order 
jQuery('#gridId').jqGrid('remapColumns', globalColumnOrder, true, false); 
+0

धन्यवाद, सॉर्टेबल फ़ंक्शन का अपडेट विकल्प मेरे लिए काम करता है, जो ग्रिड.जेकग्रिड ("गेटग्रिड पैराम", "रीमेप कॉलम") के साथ मिलकर काम करता है जैसा कि ग्रोक्स द्वारा सुझाया गया है, जो एक ही कॉलम ऑर्डर – msanjay

+0

@zishan प्राप्त करने के लिए प्रतीत होता है क्या आपको पता है कि कोई तरीका है या नहीं कॉलम के क्रमपरिवर्तन को रोक दें? – will824

0

इस बहुत आसान नहीं होगा:

मैं कुछ इस तरह करना था। सॉर्ट करने योग्य इंडेक्स() फ़ंक्शन का उपयोग करके सभी पंक्तियों को मानचित्रित करने और अपनी स्थिति ढूंढने के लिए बस ui तत्व का उपयोग करना?

stop: function(e, ui) { 
     console.log($.map($(this).find('tr.ui-widget-content'), function(el) { 
      return el.id + ' = ' + $(el).index(); 
     })); 
     } 
0

टिप्पणी @msanjay द्वारा दिए गए ऐसा करने का सबसे अच्छा तरीका है है और यहाँ कोड है जो मेरे लिए काम किया है।

var globalvar_sortingorder; 

jQuery('#gridId').jqGrid({ 
....... 
    sortable: { update: function(relativeColumnOrder) { 
        var grid = jQuery('#gridId'); 
        var columnOrder=grid.jqGrid("getGridParam", "remapColumns"); 
       // columnOrder now contains exactly what's necessary to pass to to remapColumns 
       // now save columnOrder somewhere 

      globalvar_sortingorder=columnOrder; 

        }} 
.... 
}); 

स्तंभ व्यवस्था बहाल करने के लिए

if(getObjectFromLocalStorage("sortingorder")) {  
jQuery('#gridId').jqGrid('remapColumns', globalvar_sortingorder, true, false);   
} 
0

उपयोग इस एक

$("#list").navGrid('#pager1', { edit: true, add: true, del: true }); 
संबंधित मुद्दे