2013-04-02 7 views
0

J'essaie d'ajouter des filtres de colonne à jQuery DataTables. Mais ne pas avoir de sortie. Je ne reçois aucune erreur et je ne peux pas deviner où le code ne fonctionne pas.jQuery DataTables ajouter une colonne Le filtre ne fonctionne pas

Les bibliothèques que je l'ai ajouté est la suivante:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="http://localhost/codegen/assets/js/jquery.dataTables.js" type="text/javascript"></script> 
<script src="http://localhost/codegen/js/jquery.dataTables.columnFilter.js" type="text/javascript"></script> 

<style type="text/css"> 
    @import "http://localhost/codegen/assets/css/demo_table_jui.css"; 
    @import "http://localhost/codegen/assets/themes/smoothness/jquery-ui-1.8.4.custom.css"; 
</style> 

et le code JQuery est comme suit:

$(document).ready(function(){ 
     $('#datatables').dataTable({ 
      "sPaginationType":"full_numbers", 
      "sScrollX": "100%", 
      "bScrollCollapse": true, 
      "bAutoWidth": true, 
      "aaSorting":[[0, "asc"]], 
      "bJQueryUI":true 
      // Adding the filters equal to the no of columns 
     }).columnFilter({ 
      aoColumns: [ { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
         { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] } 
       ] 
     }); 
    }) 

Quelqu'un peut-il dire ce qui est problème/où je me trompe? Je ne reçois aucune erreur aussi et aucune sortie aussi.

Merci à l'avance. NC

+0

Où est votre source de données? Vous avez besoin d'une table de id = datatables pour que le javascript fonctionne. – gary

Répondre

1

Lorsque je regarde sur le site Web du plugin Datatable, à cette adresse URL (http://www.datatables.net/release-datatables/examples/api/multi_filter_select.html), il semble assez évident que vous allez dans le mauvais sens.

Voici ce qu'ils font pour ajouter <SELECT> pour accomplir le filtrage des données sur des colonnes dans une table de données:

(function($) { 
/* 
* Function: fnGetColumnData 
* Purpose: Return an array of table values from a particular column. 
* Returns: array string: 1d data array 
* Inputs: object:oSettings - dataTable settings object. This is always the last argument past to the function 
*   int:iColumn - the id of the column to extract the data from 
*   bool:bUnique - optional - if set to false duplicated values are not filtered out 
*   bool:bFiltered - optional - if set to false all the table data is used (not only the filtered) 
*   bool:bIgnoreEmpty - optional - if set to false empty values are not filtered from the result array 
* Author: Benedikt Forchhammer <b.forchhammer /AT\ mind2.de> 
*/ 
$.fn.dataTableExt.oApi.fnGetColumnData = function (oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty) { 
    // check that we have a column id 
    if (typeof iColumn == "undefined") return new Array(); 

    // by default we only want unique data 
    if (typeof bUnique == "undefined") bUnique = true; 

    // by default we do want to only look at filtered data 
    if (typeof bFiltered == "undefined") bFiltered = true; 

    // by default we do not want to include empty values 
    if (typeof bIgnoreEmpty == "undefined") bIgnoreEmpty = true; 

    // list of rows which we're going to loop through 
    var aiRows; 

    // use only filtered rows 
    if (bFiltered == true) aiRows = oSettings.aiDisplay; 
    // use all rows 
    else aiRows = oSettings.aiDisplayMaster; // all row numbers 

    // set up data array 
    var asResultData = new Array(); 

    for (var i=0,c=aiRows.length; i<c; i++) { 
     iRow = aiRows[i]; 
     var aData = this.fnGetData(iRow); 
     var sValue = aData[iColumn]; 

     // ignore empty values? 
     if (bIgnoreEmpty == true && sValue.length == 0) continue; 

     // ignore unique values? 
     else if (bUnique == true && jQuery.inArray(sValue, asResultData) > -1) continue; 

     // else push the value onto the result data array 
     else asResultData.push(sValue); 
    } 

    return asResultData; 
}}(jQuery)); 


function fnCreateSelect(aData) 
{ 
    var r='<select><option value=""></option>', i, iLen=aData.length; 
    for (i=0 ; i<iLen ; i++) 
    { 
     r += '<option value="'+aData[i]+'">'+aData[i]+'</option>'; 
    } 
    return r+'</select>'; 
} 


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

    /* Add a select menu for each TH element in the table footer */ 
    $("tfoot th").each(function (i) { 
     this.innerHTML = fnCreateSelect(oTable.fnGetColumnData(i)); 
     $('select', this).change(function() { 
      oTable.fnFilter($(this).val(), i); 
     }); 
    }); 
}); 
+0

J'ai essayé la même chose mais encore aucune sortie/aucune erreur .. :( – NealCaffrey

+4

À l'URL que j'ai posté, ils semblent ajouter le ....Avez-vous un pied dans votre cas? –

+1

J'ai ajouté un exemple ici: http://jsfiddle.net/NpA3w/ –

Questions connexes