jQuery - dataTable - Einstellungen auslagern

k3nguruh

Erfahrenes Mitglied
Hallo,

ich versuche mich gerade an das Plugin dataTable....

Alles anscheinend soweit auch kein Problem.
Nur möchte ich gerne "meine" Einstellungen, die für jede Tabelle gleich sind, auszulagern. Und da hakt es leider.

Ich habe mir also eine JS Datei "jquery-dataTable-addon.js" erstellt und diese nach dem Plugin auf der Seite im <head> - Bereich eingebunden. In dieser Datei ist weiterer Code drin, unter anderem verschiedene Sortierungen... Ist aber Nebensache.

jquery-dataTable-addon.js (Ausschnitt):
Code:
    $.extend($.fn.dataTable.defaults, {
        'iCookieDuration': (60 * 60 * 24) * 7, // (1 Tag) * x
        'bStateSave': true,
        'bSortClasses': false,
        'oLanguage': {
            'sProcessing':   'Bitte warten...',
            'sLengthMenu':   '_MENU_ Einträge anzeigen',
            'sZeroRecords':  'Keine Einträge vorhanden!',
            'sInfo':         'Anzeige: _START_ bis _END_ von _TOTAL_ Einträgen',
            'sInfoEmpty':    'Anzeige: keine Treffer',
            'sInfoFiltered': '(Gefiltert: _MAX_ Einträge)',
            'sInfoPostFix':  '',
            'sSearch':       'Einträge durchsuchen',
            'sUrl':          '',
            'oPaginate': {
                'sFirst':    '&laquo;',
                'sPrevious': '&lsaquo;',
                'sNext':     '&rsaquo;',
                'sLast':     '&raquo;'
            }
        },
        'sPaginationType': 'full_numbers',
        'aLengthMenu': [[10, 20, 30, 40, 50, -1], [10, 20, 30, 40, 50, 'Alle']],
        'iDisplayLength': -1
    });

Eigentlich sollten meinem Verständnis nach, die Standard Einstellungen von dem Plugin mit meinen Einstellungen überschrieben worden sein.
Und nun rufe ich das Plugin speziell für Tabelle XX wie folgt auf...
Code:
$('#table_XX').dataTable({
    'aaSorting':    [[0, 'asc'], [1, 'asc'], [3, 'asc']],     // Startsortierung [[x, 'asc'], [x, 'asc']], wenn kein Cookie
    'aoColumnDefs': [
            {'bSortable': false,   'aTargets': [2, 5]},       // Spalte [x,x,x] nicht sortieren
            {'bSearchable': false, 'aTargets': [2, 3, 4, 5]}, // Spalte [x,x,x] nicht durchsuchen
            {'sType': 'string-de', 'aTargets': [0, 1]},
            {'sType': 'date-de',   'aTargets': [3, 4]}
        ]
});

Firefox meldet dann aber folgenden Fehler...

HTML:
Fehler: TypeError: oAria is undefined
Quelldatei: jquery-dataTables-1.9.4.js
Zeile: 4077

Das komische daran ist, wenn ich alles zusammenfasse, funktioniert die ganze Sache. Nur möchte ich mir den oberen Code-Teil sparen, da dieser IMMER gleich ist.

folgendes funktioniert Problemlos
Code:
$('#table_XX').dataTable({

    // meine Standard Einstellungen
    'iCookieDuration': (60 * 60 * 24) * 7, // (1 Tag) * x
    'bStateSave': true,
    'bSortClasses': false,
    'oLanguage': {
        'sProcessing':   'Bitte warten...',
        'sLengthMenu':   '_MENU_ Einträge anzeigen',
        'sZeroRecords':  'Keine Einträge vorhanden!',
        'sInfo':         'Anzeige: _START_ bis _END_ von _TOTAL_ Einträgen',
        'sInfoEmpty':    'Anzeige: keine Treffer',
        'sInfoFiltered': '(Gefiltert: _MAX_ Einträge)',
        'sInfoPostFix':  '',
        'sSearch':       'Einträge durchsuchen',
        'sUrl':          '',
        'oPaginate': {
            'sFirst':    '&laquo;',
            'sPrevious': '&lsaquo;',
            'sNext':     '&rsaquo;',
            'sLast':     '&raquo;'
        }
    },
    'sPaginationType': 'full_numbers',
    'aLengthMenu': [[10, 20, 30, 40, 50, -1], [10, 20, 30, 40, 50, 'Alle']],
    'iDisplayLength': -1,


    // Spezielle Einstellungen
    'aaSorting':    [[0, 'asc'], [1, 'asc'], [3, 'asc']],     // Startsortierung [[x, 'asc'], [x, 'asc']], wenn kein Cookie
    'aoColumnDefs': [
            {'bSortable': false,   'aTargets': [2, 5]},       // Spalte [x,x,x] nicht sortieren
            {'bSearchable': false, 'aTargets': [2, 3, 4, 5]}, // Spalte [x,x,x] nicht durchsuchen
            {'sType': 'string-de', 'aTargets': [0, 1]},
            {'sType': 'date-de',   'aTargets': [3, 4]}
        ]
});

Kann mir dabei vll jemand helfen?
 
Hallo,

ich habe mal auf die schnelle was Online gestellt.

Auf der Seite befinden sich 2 Links mit denen man umherschalten kann. Am besten dabei immer mal den Quelltext aufrufen um den Unterschied zu sehen.
Jedenfalls werden bei dem 1. Link die "optionen" direkt übergeben (das was ich eigentlich nicht möchte, da es immer das gleiche ist) und beim 2. Link die "optionen" mit $.extend in der Datei "jquery-dataTables-addon.js" überschrieben.
 
Hat sich erledigt. Mir wurde anderweitig geholfen......

Nur um das Thema zu vervollständigen und zu schliessen. Folgendes musste noch eingefügt werden (Zeile 23-26):

Code:
    $.extend($.fn.dataTable.defaults, {
        'iCookieDuration': (60 * 60 * 24) * 7, // (1 Tag) * x
        'bStateSave': false,//true,
        'bSortClasses': true,
        'oLanguage': {
            'sProcessing':   'Bitte warten...',
            'sLengthMenu':   '_MENU_ Einträge anzeigen',
            'sZeroRecords':  'Keine Einträge vorhanden!',
            'sInfo':         'Anzeige: _START_ bis _END_ von _TOTAL_ Einträgen',
            'sInfoEmpty':    'Anzeige: keine Treffer',
            'sInfoFiltered': '(Gefiltert: _MAX_ Einträge)',
            'sInfoPostFix':  '',
            'sSearch':       'Einträge durchsuchen',
            'sUrl':          '',
            'oPaginate': {
                'sFirst':    '&laquo;',
                'sPrevious': '&lsaquo;',
                'sNext':     '&rsaquo;',
                'sLast':     '&raquo;'
            },

            // START - das muss noch rein
            'oAria': {
                'sSortAscending': ' - click/return to sort ascending',
                'sSortDescending': ' - click/return to sort descending'
            }
            // ENDE

        },
        'sPaginationType': 'full_numbers',
        'aLengthMenu': [[10, 20, 30, 40, 50, -1], [10, 20, 30, 40, 50, 'Alle']],
        'iDisplayLength': 10
    });
 

Neue Beiträge

Zurück