DataTables individual column filtering example (using select menus) with server side processing s

DataTables individual column filtering example (using select menus) with server side processing s

pbullpbull Posts: 3Questions: 0Answers: 0
edited July 2011 in General
Hello,

I have been trying the select menus example with a table that is populated by a call to a php page that in turn queries a MySql db. The select elements are rendering but they are empty. Could this be a callback issue. Could this section:
[code]
/* 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 );
} );
} );
} );
[/code]

Be rendering before the data has been returned from the server side? And if so, any suggestion on how I could handle this issue?

Thanks,
Paul

Replies

  • pbullpbull Posts: 3Questions: 0Answers: 0
    Btw here is the full code:
    javascript:
    [code]


    (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
    */
    $.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 wany 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 wany 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 -1) continue;

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

    return asResultData;
    }}(jQuery));


    function fnCreateSelect( aData )
    {
    var r='', i, iLen=aData.length;
    for ( i=0 ; i
  • pbullpbull Posts: 3Questions: 0Answers: 0
    Here is the Htm:
    [code]



    Test Run
    Test Unit
    Test Name
    Time Executed
    Day Executed
    Environment
    API
    Status
    Failure Type
    Assertion Constraint
    Message

























    [/code]
  • ashrafurashrafur Posts: 2Questions: 0Answers: 0
    Hi, I am having same problem. Any solution?
  • fbasfbas Posts: 1,094Questions: 4Answers: 0
    the solution is to replace fnGetColumnData with a call to the server to get the column data.
  • jobkingorijobkingori Posts: 10Questions: 0Answers: 0
    edited August 2011
    Hey fbas,

    I'm having the same problem as pbull ... what do you mean by "replace fnGetColumnData with a call to the server to get the column data" ... could you provide an example. My setup is exactly the same ... I have server side processing and when I add the two functions the table stops populating ...
  • fbasfbas Posts: 1,094Questions: 4Answers: 0
    fnGetColumnData is a plug-in function that operates on client-side data found in the oSettings object's aiDisplay and aoData (fnGetData) arrays. If you're using server side processing, only one window's worth of data (iDisplayLength number of rows) will be in the client side object, so fnGetColumnData won't get all the data you want.

    if you want your column select to have all the possible values in a column, you need to run a query on the server to return all distinct values for that field.
  • if07087if07087 Posts: 1Questions: 0Answers: 0
    try this url,

    http://datatables.net/forums/discussion/3931/server-side-filtering-on-specific-columns-with-input-and-select/p1
This discussion has been closed.