2011-07-01 17 views
9

ड्रैग/ड्रॉप कॉलम रीडरिंग एक शानदार सुविधा है, लेकिन मैं उपयोगकर्ताओं को विशेष (गैर-डेटा) कॉलम को स्थानांतरित करने से कैसे रोकूं?कुछ स्लिमग्रिड कॉलम को पुन: व्यवस्थित करने से रोकें

उदाहरण के लिए, मैं अपने mutli-select ग्रिड के लिए चेकबॉक्स चयनकर्ताओं का उपयोग कर रहा हूं, लेकिन यह कॉलम हमेशा बाईं ओर बंद होना चाहिए, जबकि अन्य कॉलम को स्वतंत्र रूप से पुन: व्यवस्थित किया जा सकता है।

उत्तर

2

मैंने jQuery UI पर क्रमबद्ध डेमो को देखा और कुछ आइटमों को बाहर करने के लिए slick.grid.js में setupColumnReorder फ़ंक्शन को संशोधित किया। चेकबॉक्स कॉलम को छोड़कर मैं इसे फिर से प्राप्त करने से रोकने में सक्षम था, यहां तक ​​कि इससे पहले अन्य कॉलम खींचकर भी।

function setupColumnReorder() { 
var checkBoxColumn = $headers.children([0]).attr('id'); 
$headers.sortable({ 
items: "div:not('.slick-resizable-handle','#"+checkBoxColumn+"')", 
... 

चूंकि मेरा चेकबॉक्स कॉलम हमेशा पहले होता है, इसलिए मैं बस आईडी को पकड़ता हूं। एक हैक का थोड़ा सा, लेकिन यह काम किया।

2

मैं इस कोशिश की:

function setupColumnReorder() { 
var checkBoxColumn = $headers.children([0]).attr('id'); 
$headers.sortable({ 
items: "div:not('.slick-resizable-handle','#"+checkBoxColumn+"')", 
... 

लेकिन मैं समस्या नहीं थी जब यह पहले अन्य स्तंभों खींच। फिर मैंने यह कोशिश की:

grid.onColumnsReordered.subscribe(function (e, args) { 
    if (myGridColumns[0].id != grid.getColumns()[0].id) 
    { 
     grid.setColumns(myGridColumns); 
    } 
    else 
    { 
     myGridColumns= grid.getColumns(); 
    } 
}); 

और यह ठीक था।

+0

निश्चित रूप से कॉलम के वास्तविक पुनर्निर्देशन को रोकने के लिए यह अच्छा है लेकिन समस्या यह है कि उपयोगकर्ता अभी भी कॉलम को खींच सकता है जिससे वह झूठी भावना दे रहा है कि स्तंभ को दूसरों की तरह पुन: व्यवस्थित किया जा सकता है। मुझे आश्चर्य है कि बाएं से कई कॉलम को "ऑर्डर करने योग्य" के रूप में चिह्नित करने के लिए कोई ध्वज/विकल्प नहीं है। मेरा मतलब है कि उनके पास प्रत्येक कॉलम पर आकार बदलने योग्य विकल्प है? शायद एक अच्छा कारण है लेकिन मैं इसे देख नहीं रहा हूं ... – Marko

+0

आप दो टेबल बनाकर इस समस्या को हल कर सकते हैं। बाएं टेबल में आप निश्चित कॉलम डाल देंगे और उन्हें विशिष्ट फ़ील्ड के लिए बाध्य करेंगे। और सही टेबल में आप बाकी कॉलम डाल देंगे। यह सही समाधान नहीं होगा लेकिन यह आपके इरादे के अनुसार काम करेगा। लेकिन डेटा अपडेट करते समय आपको सावधान रहना चाहिए। – Zarko

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