पर कॉलिंग सॉर्ट स्लिक्ग्रिड में मैं grid.SetSortColumn(colName,true/false)
का उपयोग करके सॉर्ट कॉलम और इसकी तरह की दिशा सेट करने में सक्षम हूं। यह केवल सॉर्टिंग ग्लाइफ सेट करता है लेकिन कोई सॉर्टिंग नहीं करता है। सॉर्ट इवेंट हैंडलर को कॉल करने का कोई तरीका है। मैंने सॉर्ट हैंडलर को grid.onSort.subscribe(function(){});
slickgrid
उत्तर
शायद it आपकी मदद करेगा। ऐसा लगता है कि SlickGrid स्वयं को सॉर्ट कर रहा है - इसलिए यदि आप चाहें तो इसे मैन्युअल रूप से ट्रिगर कर सकते हैं।
जो व्यवहार आप देख रहे हैं वह सही है।
grid.setSortColumn(columnId, isAsc);
केवल कॉलम कॉलम पर ग्लिफ़ अपडेट करता है। आपके मामले में, आपको प्रारंभ में डेटा को सॉर्ट करने की आवश्यकता होगी, और फिर sortColumn पर ग्लाइफ को अपडेट करने के लिए setSortColumn का उपयोग करें। आप इस तरह के सॉर्ट इवेंट में इस्तेमाल किए गए सॉर्टर का पुन: उपयोग कर सकते हैं:
var gridSorter = function(columnField, isAsc, grid, gridData) {
var sign = isAsc ? 1 : -1;
var field = columnField
gridData.sort(function (dataRow1, dataRow2) {
var value1 = dataRow1[field], value2 = dataRow2[field];
var result = (value1 == value2) ? 0 :
((value1 > value2 ? 1 : -1)) * sign;
return result;
});
grid.invalidate();
grid.render();
}
var grid = new Slick.Grid($gridContainer, gridData, gridColumns, gridOptions);
//These 2 lines will sort you data & update glyph while loading grid
//columnField is field of column you want to sort initially, isAsc - true/false
gridSorter(columnField, isAsc, grid, gridData);
//I had the columnField, columnId same else used columnId below
grid.setSortColumn(columnField, isAsc);
grid.onSort.subscribe(function(e, args) {
gridSorter(args.sortCol.field, args.sortAsc, grid, gridData);
});
मैं इस समाधान पर कैसे पहुंचे?
यहां टिप्पणियां पढ़ें। https://github.com/mleibman/SlickGrid/issues/325
dataView.fastSort
नौकरी करता है। आप सॉर्टिंग ग्लाइफ सेट करने के लिए setSortColumn
का उपयोग कर सकते हैं।
मेरे पास एकाधिक कॉलम सॉर्ट सक्षम हैं, मुझे सही सॉर्ट कॉलम पास करने के लिए फ़ंक्शन को बदलना पड़ा।
grid.onSort.subscribe(function(e, args) {
gridSorter(**args.sortCols[0].sortCol.field**, **args.sortCols[0].sortAsc**, grid, gridData);
});
मैं Mr.Hunts से प्रेरित था, लेकिन मैं जवाब देने के grid.setInitialSortColumn(columnId, isAsc)
करने के लिए वर्तमान grid.setSortColumn(columnId, isAsc)
विस्तार करने के लिए एक अलग दृष्टिकोण लिया। यह सॉर्ट लागू करेगा और सब कुछ grid.setSortColumn
करता है।
var thisGrid = { //Your grid obj
columns: , // Your columns object
grid: , // new Slick.Grid....
}
thisGrid.grid.onSort.subscribe(function (e, args) { // ar var cols = args.sortCols;]
thisGrid.grid.customSort(args);
});
thisGrid.grid.customSort = function (args) {
var cols = args.sortCols;
thisGrid.dataView.sort(function (dataRow1, dataRow2) {
if (cols) {
for (var i = 0, l = cols.length; i < l; i++) {
var field = cols[i].sortCol.field;
var sign = cols[i].sortAsc ? 1 : -1;
var value1 = dataRow1[field],
value2 = dataRow2[field];
var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign;
if (result != 0) {
return result;
}
}
}
return 0;
});
}
thisGrid.grid.setInitialSortColumn = function (columnId, ascending) {
thisGrid.grid.setInitialSortColumns([{
columnId: columnId,
sortAsc: ascending
}
]);
};
thisGrid.grid.setInitialSortColumns = function (cols) {
sortColumns = cols;
$.each(sortColumns, function (i, col) {
var columnIndex = thisGrid.grid.getColumnIndex(col.columnId);
var column = thisGrid.columns[columnIndex];
if (col.sortAsc == null) {
col.sortAsc = true;
}
var args = {
grid: thisGrid.grid,
multiColumnSort: true,
sortCols: [{
sortCol: column,
sortAsc: col.sortAsc
}
]
}
thisGrid.grid.setSortColumn(col.columnId, col.sortAsc);
thisGrid.grid.customSort(args);
});
};
// Trigger
thisGrid.grid.setInitialSortColumn("dateDue", true);
आप स्तंभ शीर्ष पर क्लिक करें घटना ... जो
छँटाई करता है मैं इस तरह समस्या का समाधान हो ...
$('.slick-header-columns').children().eq(0).trigger('click'); // for first column
ट्रिगर कर सकते हैं मैं एकाधिक छंटाई का उपयोग कर रहा है, और ग्रिड शुरू करते समय सहेजे गए सॉर्ट डेटा को लोड करना।
जैसी उम्मीद थी, setSortColumns छंटाई निर्धारित करते हैं, लेकिन did not वास्तव में यह लागू होते हैं, और dataView.reSort() या .fastSort() फ्लॉप मदद करने के लिए, लदान में किस बिंदु मैं उन्हें कुछ कहा (मैं याद किया गया होगा की परवाह किए बिना लगते हैं , लेकिन यह काम करने के लिए इसे प्राप्त नहीं कर सका)।
अंत में, यह मेरे लिए काम किया। मैं अपने डेटा को पॉप्युलेट करने के तुरंत बाद इसे एजेक्स कॉल से देखता हूं। शायद यह सबसे हल्का नहीं है, बोर्ड पर फीडबैक लेने में बहुत खुश!
function forceResort() {
var sortColumns = grid.getSortColumns();
var cols = [];
$.each(sortColumns, function(index, value) {
var columnId = value.columnId;
var sortAsc = value.sortAsc;
var sortCol = { field: columnId };
var col = { sortCol: sortCol, sortAsc : sortAsc};
cols.push(col);
});
dataView.sort(function (dataRow1, dataRow2) {
var sortResult = 0;
for (var i = 0, l = cols.length; i < l; i++) {
if (sortResult !== 0) {
break;
}
var field = cols[i].sortCol.field;
var sign = cols[i].sortAsc ? 1 : -1;
var value1 = dataRow1[field] || ''; //handle nulls - otherwise erratic sorting
var value2 = dataRow2[field] || ''; //handle nulls - otherwise erratic sorting
if ($.inArray(field, dateTypeColumns) > -1) {
sortResult = compareDates(value1, value2) * sign;
} else {
if ($.inArray(field, numericColumns) > -1) {
sortResult = compareSimple(value1, value2) * sign;
} else {
sortResult = compareAlphaNumeric(value1, value2) * sign;
}
}
}
return sortResult;
});
grid.invalidate();
grid.render();
}
मैं प्रतिष्ठा की वजह से टिप्पणियां नहीं कर सकते, जो वह जगह है जहाँ यह सबसे उपयुक्त होगा, फिर भी, मेरा उत्तर @Premshankar तिवारी और @Siddharth जवाब के संबंध में है।
मैंने सिद्धार्थ के उत्तर में dataView.fastSort
विकल्प पसंद किया, जो आईई 7 और 8 को छोड़कर सभी ब्राउज़रों में मेरे लिए काम करता है। मैंने इसे आईई 9 या उससे ऊपर में परीक्षण नहीं किया। दुर्भाग्य से, मेरे नेटवर्क पर अधिकांश विरासत अनुप्रयोगों के लिए संगतता मुद्दों के कारण आईई 7 या 8 चलाते हैं। लेकिन, प्रीम्सशंकर का जवाब आईई 7 और 8 में काम करता है।
तो, मैं कुछ इस तरह कर रही है समाप्त हो गया:
if (msie > 0) {
$(".slick-header-columns").children().eq(5).trigger("click");
$(".slick-header-columns").children().eq(4).trigger("click");
} else {
dataView.fastSort('process','unit');
}
जहां स्तंभ अनुक्रमणिका (5) = 'इकाई' और स्तंभ अनुक्रमणिका (4) = 'प्रक्रिया'। ध्यान दें कि dataView.fastSort
विधि में रिवर्स ऑर्डर है। मैं एक ऐसे फ़ंक्शन का भी उपयोग कर रहा हूं जो IE ब्राउज़र संस्करण का पता लगाता है और इसे msie
पर असाइन करता है।
मेरे .trigger
विधि का उपयोग के बारे में केवल शिकायत है कि आप अपने ग्रिड गतिशील छिपाना/दिखाना कॉलम, की स्थापना की है, तो अनुक्रमित सुविधा होगा संभावित प्रकार अनायास ही स्तंभों पर जब तक आप केवल आरंभीकरण पर बुला रहे हैं जब छिपाने/शो क्षमताओं हैं वर्तमान।
एक और अधिक स्वच्छ समाधान onSort के तर्क पर भरोसा करते हैं, लेकिन इसके बजाय getSortColumns कॉल करने के लिए नहीं है:
function gridSorter() {
var scol=grid.getSortColumns();
if (scol.length===0) return;
var scolId=scol[0].columnId, asc=scol[0].sortAsc;
data.sort(function(a, b) {
var result = a[scolId] > b[scolId] ? 1 : a[scolId] < b[scolId] ? -1 : 0;
return asc ? result : -result;
});
grid.invalidate();
}
तब कार्य करें:
grid.onSort.subscribe(gridSorter);
यह किसी भी समय आप चाहते हैं छँटाई पैर जमाने के लिए अनुमति देगा (से AJAX के साथ डेटा को पुनः लोड करने के बाद) ग्रिडस्टर()
- 1. SlickGrid
- 2. SlickGrid
- 3. slickgrid
- 4. SlickGrid
- 5. slickgrid
- 6. SlickGrid
- 7. SlickGrid:
- 8. SlickGrid 2.0
- 9. मैं slickgrid
- 10. Slickgrid - एक-क्लिक चेकबॉक्स?
- 11. SlickGrid कॉलम समूह
- 12. SlickGrid और टेक्स्ट चयन
- 13. SlickGrid-rotated कॉलम हेडर
- 14. SlickGrid बनाम JQGrid
- 15. SlickGrid सेल संपादक
- 16. पहले कॉलम के साथ SlickGrid
- 17. का मेल SlickGrid फ़िल्टर उदाहरण
- 18. SlickGrid डेटा व्यू क्या है?
- 19. jQuery sls में एकाधिक slickGrid
- 20. SlickGrid का चयन करें संपादक
- 21. SlickGrid के लिए अच्छा ट्यूटोरियल?
- 22. SlickGrid RemoteModel बनाम डेटाव्यू मॉडल
- 23. SlickGrid माता-पिता की 100% ऊंचाई?
- 24. सीएसवी निर्यात के लिए SlickGrid कार्यों?
- 25. slickgrid में कैसे मैं एक जावास्क्रिप्ट समारोह
- 26. सरल jQuery SlickGrid JSON उदाहरण या दस्तावेज़ीकरण
- 27. SlickGrid DataView फिल्टर असामान्य रूप से
- 28. Slickgrid, ड्रॉप डाउन सूची के साथ कॉलम?
- 29. SlickGrid: लंबी सेल प्रविष्टियों के लिए पूर्ण पाठ कैसे देखें?
- 30. SlickGrid कॉलम - आईडी और फ़ील्ड के बीच अंतर
कॉल करके बस एक भयानक गड़बड़ ... हालांकि यह काम करने के लिए प्रोग्रामेटिक सॉर्टिंग प्राप्त करने का सबसे विश्वसनीय तरीका है। –