Ich bin nicht stark mit dem Javascript, und ich kann manchmal kopieren JQuery-Code und es funktioniert. Bitte haben Sie Geduld mit mir.clear/reapply tastersorter filterung auf pageload
Ich verwende die neueste Version von tablesorter wie vor ein paar Tagen.
Ich habe eine Seite mit einer Tabelle und einem Kontrollkästchen. Wenn das Kontrollkästchen aktiviert ist, verwende ich einen Filter für die 7. Zeile, der den Wert einer Dropdown-Box darstellt. Es funktioniert perfekt.
Wenn ich die Seite posten, ist der Filter verloren, aber das Kontrollkästchen checked status wird beibehalten, was nicht synchron ist. Also rufe ich die Funktion auf, die den Checkbox-Status liest und den Filter erneut setzt, aber es funktioniert nicht. Es scheint, dass die Tabelle nicht initialisiert ist und der Filter somit nicht angewendet wird. Ich habe versucht, die _LoadComplete in der CodeBehind und in einer window.onload -Funktion. Keine Arbeit.
Also habe ich beide filterinit und filterend Funktionen, und eine einfache filter_saveFilters: true. Dies hält die Filterung perfekt aufrecht, aber wenn ich auf eine andere Seite gehe und zurückkomme, wird der Filter beibehalten und das Kontrollkästchen ist deaktiviert. Wieder nicht synchron.
Ich sehe, dass es 2 Methoden gibt, mit denen die gespeicherten Filter zurückgesetzt werden können. $ ('table'). trigger ('filterReset'); $ ('table'). trigger ('filterResetSaved'); Ich kann sie nicht zur Arbeit bringen.
Alle Probleme sind zum Zeitpunkt des Ladens der Seite. Einfach, wenn das Kontrollkästchen aktiviert ist, wenden Sie Filter an und behalten Sie es bei, bis das Kontrollkästchen geändert oder die Seite ohne Postback geladen wird.
Filterfunktion, die das Kontrollkästchen und die Dropdown-Box liest und den Filter und die Inkorporation des Tabellensortierers einstellt.
function filterTS() {
if (document.getElementById("slideTwo").checked == true) {
var e = document.getElementById("selUsers");
var selectedText = e.options[e.selectedIndex].text;
var filters = $('table').find('input.tablesorter-filter'), col = 7, txt = selectedText, cur = filters.eq(col).val(), mult, i;
}
else {
var filters = $('table').find('input.tablesorter-filter'), col = 7, txt = '', cur = filters.eq(col).val(), mult, i;
}
if (cur && txt !== "") {
mult = cur.split('|');
i = $.inArray(txt, mult);
if (i < 0) {
mult.push(txt);
} else {
mult.splice(i, 1);
}
txt = mult.join('|');
}
filters.eq(col).val(txt).trigger('search', false);
}
//Tablesorter Initialization
$(window).ready(function() {
$("#GridView1").tablesorter({
theme: 'green',
sortList: [[0, 1]],
headerTemplate: '{content}{icon}',
dateFormat: 'mmddyyyy',
sortMultiSortKey: 'shiftKey',
sortResetKey: 'ctrlKey',
usNumberFormat: true,
widgets: ['zebra', 'filter'],
widgetOptions: {
filter_ignoreCase: true,
}
});
$('table')
.bind('filterInit', function() {
// check that storage ulility is loaded
if ($.tablesorter.storage) {
// get saved filters
var f = $.tablesorter.storage(this, 'tablesorter-filters') || [];
$(this).trigger('search', [f]);
}
})
.bind('filterEnd', function() {
if ($.tablesorter.storage) {
// save current filters
var f = $(this).find('.tablesorter-filter').map(function() {
return $(this).val() || '';
}).get();
$.tablesorter.storage(this, 'tablesorter-filters', f);
}
});
$("#slideTwo").on("click", filterTS);
$("#slideOne").on("click", hidedates);
Was mache ich falsch? Warum kann ich den Filter nicht über den Code beim Laden der Seite einstellen? Wo zur Hölle setze ich:
$('table').trigger('filterReset');
$('table').trigger('filterResetSaved');
Muss ich 'Tabelle' zu '# Gridview1' ändern? Nichts scheint zu funktionieren.
Ja, das funktioniert nicht. Ich habe 2 verschiedene Szenarien, eines ohne Filter speichern, aber versuchen, durch fiterTS() zu laden, und eines mit Filter speichern, wo ich versuche, es beim Laden der Seite zu löschen, wenn das Kontrollkästchen nicht aktiviert ist. Ich habe eine Reihe von Variationen ausprobiert, aber es bringt einfach keine Ergebnisse. –