2013-04-18 3 views
0

Я передаю объект json в функцию, которая создает datatable. Я использую columnFilter для добавления фильтров в каждый столбец, и я использую массив для заполнения списка фильтров.Как очистить список столбцов столбцовФильтр выбора?

У меня есть картинка http://imgur.com/ehV6lZP, показывающая хороший фильтр.

Проблема в том, что я вызываю функцию с помощью нового json, фильтры столбцов превращаются в большую строку с предыдущими значениями фильтра в ней. Это происходит, хотя я устанавливаю длину массива в 0 и json пуст.

Этот файл http://imgur.com/fi6Y8rz pic показывает затор из предыдущих значений в заголовке фильтра, когда таблица перезагружается пустым json.

В большинстве примеров в Интернете, я вижу людей, использующих это:

{ type: "select"} 

Это, кажется, построить список для них, но это не работает для меня. Этот метод, похоже, отличен, кроме того, когда я перезаряжаю таблицу.

Я ищу информацию о том, как очищать эти фильтры при каждом вызове этой функции.

function popNoteTable(oJson) { 
    //these store the unique values for filtering columns 
    var oTitles = []; 
    var oLocs = []; 
    var oSigned = []; 

    if (oJson.M_REC.NOTE.length > 0) { 
    oTitles = getUniqueJsonValuesByCol("S_TITLE", oJson.M_REC.NOTE); 
    oLocs = getUniqueJsonValuesByCol("S_FACILITY", oJson.M_REC.NOTE); 
    oSigned = getUniqueJsonValuesByCol("S_SIGNED_BY", oJson.M_REC.NOTE); 
    } else { 
    oTitles.length = 0; 
    oLocs.length = 0; 
    oSigned.length = 0; 
    } 

    var oTable = $('#example').dataTable({ 
    "bFilter": true, 
    "iDisplayLength": 50, 
    "bProcessing": true, 
    "bDestroy": true, 
    "aaData": oJson.M_REC.NOTE, 
    "bAutoWidth": false, 
    "aoColumns": [ 
     {"mDataProp": "S_TITLE"}, 
     {"mDataProp": "S_FACILITY"}, 
     {"mDataProp": "S_SIGNED_BY"}, 
     {"mDataProp": "S_SIGN_DT_TM"}, 
     {"mDataProp": "F_EVENT_ID", "bVisible": false} 
    ] 
    }).columnFilter({ 
    sPlaceHolder: "head:before", 
    aoColumns: [ 
     {type: "select", values: oTitles}, 
     {type: "select", values: oLocs}, 
     {type: "select", values: oSigned}, 
     null, 
     null 
    ] 
}); 

ответ

0

Хорошо, поэтому я понял, что функция фильтрации должна каким-то образом изменить мои заголовки таблиц. Если я переопределю свою таблицу, вызвав следующую функцию, прежде чем вызывать указанную выше функцию для выполнения набора данных, все работает нормально.

function defineTable() { 
    var sTable 
    = '<table id="example" class="display" cellpadding="0" cellspacing="0" border="1" width="100%">' + 
    ' <thead>' + 
    ' <tr>' + 
    '  <th>Note Title</th>' + 
    '  <th>Facility</th>' + 
    '  <th>Signed By</th>' + 
    '  <th>Signed Dt/Tm</th>' + 
    '  <th>Event Id</th>' + 
    ' </tr>' + 
    ' <tr>' + 
    '  <th>Note Title</th>' + 
    '  <th>Facility</th>' + 
    '  <th>Signed By</th>' + 
    '  <th>Signed Dt/Tm</th>' + 
    '  <th>Event Id</th>' + 
    ' </tr>' + 
    ' </thead>' + 
    ' <tbody></tbody>' + 
    ' <tfoot>' + 
    ' <tr>' + 
    '  <th>Note Title</th>' + 
    '  <th>Facility</th>' + 
    '  <th>Signed By</th>' + 
    '  <th>Signed Dt/Tm</th>' + 
    '  <th>Event Id</th>' + 
    ' </tr>' + 
    ' </tfoot>' + 
    '</table>'; 

    $('#notesTable').html(sTable); 
} 
Смежные вопросы