Używam datatables 1.9.4 i wtyczki filtrowania kolumn. Działa jak urok, z wyjątkiem tego, kiedy używam "Wybierz" znaczniki do filtrowania kolumn, filtr nie jest wykonywany dla dokładnych dopasowań. Używa wyszukiwania wieloznacznego, którego nie chcę. Myślałem za pomocą elementu wybranego zamiast wejścia tekstowego rozwiązać problem, ale nie.

Kiedy szukam semestru - i ', powinien pokazać tylko "semestr - ja" wyniki. Ale pokazuje semestr - II ' i ' Semester - III ' Mecze, ponieważ filtr nie szuka dokładnego dopasowania.

Próbowałem jQuery Datatable Columnfilter Plugin. Czy "Wybierz" Styl Filtr Styl Support Dokładny?, a także http://code.google.com/p/jquery-datatables-Column-filter/issues/detail?id=11 to. Ale nikt nie rozwiązał mojego problemu.

KOD JS

$('#semester').dataTable({
                    "sPaginationType": "full_numbers"
                })
                .columnFilter({
                    aoColumns: [ { type: "text"},
                             { type: "text" },
                             { type: "select", values: [ 'Year - I', 'Year - II', 'Year - III', 'Semester - I', 'Semester - II', 'Semester - III', 'Semester - IV', 'Semester - V', 'Semester - VI', 'Semester - VII  ( Integrated )', 'Semester - VIII  ( Integrated )', 'Semester - IX  ( Integrated )', 'Semester - X  ( Integrated )']},
                             { type: "text" },
                             null
                        ]

                });

Czy są jakieś inne alternatywy? Z góry dziękuję

AKTUALIZACJA

Próbowałem też poniżej, ale to też nie pomogło:

if (bRegex)
      oTable.fnFilter($(this).val(), iColumn, bRegex);
else
      oTable.fnFilter(unescape("^"+$(this).val()+"$"), iColumn, true);
2
asprin 24 wrzesień 2012, 12:26

3 odpowiedzi

Najlepsza odpowiedź

Voila! Pomijał go za pomocą serii prób procesowych i błędów. Dla tych, którzy są w podobnym problemie, jest tutaj rozwiązanie:

W pliku wtyczki, wewnątrz select.change(function () {}) zmień to:

if (bRegex)
  oTable.fnFilter($(this).val(), iColumn, bRegex);
else
  oTable.fnFilter(unescape($(this).val()), iColumn);

Do

if (bRegex)
  oTable.fnFilter($(this).val(), iColumn, bRegex);
else
  oTable.fnFilter(unescape("^"+$(this).val()+"$"), iColumn, true, false);
4
asprin 1 październik 2012, 07:50

Mlekty filtr w Dyma datatable

var asInitVals = new Array();

$(document).ready(function() {
    var oTable = $('#example').dataTable( {
        "oLanguage": {
            "sSearch": "Search all columns:"
        }
    } );

    $("tfoot input").keyup( function () {
        /* Filter on the column (the index) of this element */
        oTable.fnFilter( this.value, $("tfoot input").index(this) );
    } );



    /*
     * Support functions to provide a little bit of 'user friendlyness' to the textboxes in 
     * the footer
     */
    $("tfoot input").each( function (i) {
        asInitVals[i] = this.value;
    } );

    $("tfoot input").focus( function () {
        if ( this.className == "search_init" )
        {
            this.className = "";
            this.value = "";
        }
    } );

    $("tfoot input").blur( function (i) {
        if ( this.value == "" )
        {
            this.className = "search_init";
            this.value = asInitVals[$("tfoot input").index(this)];
        }
    } );
} );

Uwaga , że w powyższym kodzie, funkcje pomocy techniczne są dostarczane, aby zapewnić, że użytkownik końcowy zna, jakie dane są filtrowane. Fnfilter () jest tutaj funkcją importu pierwotnego.

// after creating the table and getting the table object...

var oTable = $('#some_id').dataTable();

// ...you can use it to get a settings object...

var oSettings = oTable.fnSettings();

// ...then you can do things with the settings object

oSettings.aoPreSearchCols[ iCol ].sSearch = "^\\s*"+'1'+"\\s*$";
oSettings.aoPreSearchCols[ iCol ].bRegex = false;
oSettings.aoPreSearchCols[ iCol ].bSmart= false;
1
Sender 24 wrzesień 2012, 09:07

Użyłem zaakceptowanej odpowiedzi, jednak jeśli zmieniam rozwijaną, a następnie zmienić go z powrotem do wartości domyślnej, nie otrzymałem żadnych wyników. Domyślam się, że próbuje wykonać dokładną wyszukiwanie tekstu "" i nic nie znajdować. Zrobiłem tę modyfikację i wydaje się, że działa dla mnie.

if ($(this).val() == "")
    oTable.fnFilter(unescape($(this).val()), iColumn, false, false, false, false);
else {
    if (bRegex)
       oTable.fnFilter($(this).val(), iColumn, bRegex, false, false, false); 
    else
       oTable.fnFilter(unescape("^" + $(this).val() + "$"), iColumn, true, false, false, false); 
    }
0
Rochelle C 13 grudzień 2013, 19:35