2016-01-11 4 views
2

Я использую Jquery datatable (со встроенным текстом свободного поиска), из-за проблемы с производительностью я решил переключиться с клиентской стороны на серверную. После этого изменения текст бесплатного поиска перестает отвечать. Я добавляю изменения. до изменения:бесплатный поиск в datatable stop working

$('#table').DataTable({ 
    "order": [[0, "desc"]], 
    "bStateSave": true, 
    "fnStateSaveParams": function (oSettings, sValue) { 

     $.cookie("CompanySearch", $("#CompanySearch").val(), { expires: 7 }); 
     $.cookie("PhoneSearch", $("#PhoneSearch").val().replace('-', ''), { expires: 7 }); 
     $.cookie("TreatmentByFilterDropDown", $("#TreatmentByFilterDropDown").val(), { expires: 7 }); 
     $.cookie("LastTreatmentByID", $("#LastTreatmentByID").val(), { expires: 7 }); 
     $.cookie("ReferenceSourceFilterDropDown", $("#ReferenceSourceFilterDropDown").val(), { expires: 7 }); 
     $.cookie("ProductClassificationFilterDropDown", $("#ProductClassificationFilterDropDown").val(), { expires: 7 }); 
     $.cookie("ImportanceFilterDropDown", $("#ImportanceFilterDropDown").val(), { expires: 7 }); 
     $.cookie("openStart", $("#openStart").val(), { expires: 7 }); 
     $.cookie("openEnd", $("#openEnd").val(), { expires: 7 }); 
     $.cookie("treatmentStart", $("#treatmentStart").val(), { expires: 7 }); 
     $.cookie("treatmentEnd", $("#treatmentEnd").val(), { expires: 7 }); 
     $.cookie("lastTreatmentStart", $("#lastTreatmentStart").val(), { expires: 7 }); 
     $.cookie("lastTreatmentEnd", $("#lastTreatmentEnd").val(), { expires: 7 }); 
     $.cookie("StatusFilterDropDown", $("#StatusFilterDropDown").val(), { expires: 7 }); 


     //alertify.log("States Saved"); 
    }, 
    "fnStateLoadParams": function (oSettings, oData) { 
     $("#CompanySearch").val($.cookie("CompanySearch")); 
     $("#PhoneSearch").val($.cookie("PhoneSearch")); 
     $("#TreatmentByFilterDropDown").val($.cookie("TreatmentByFilterDropDown")); 
     $("#LastTreatmentByID").val($.cookie("LastTreatmentByID")); 
     $("#ReferenceSourceFilterDropDown").val($.cookie("ReferenceSourceFilterDropDown")); 
     $("#ProductClassificationFilterDropDown").val($.cookie("ProductClassificationFilterDropDown")); 
     $("#ImportanceFilterDropDown").val($.cookie("ImportanceFilterDropDown")); 
     $("#openStart").val($.cookie("openStart")); 
     $("#openEnd").val($.cookie("openEnd")); 
     $("#treatmentStart").val($.cookie("treatmentStart")); 
     $("#treatmentEnd").val($.cookie("treatmentEnd")); 
     $("#lastTreatmentStart").val($.cookie("lastTreatmentStart")); 
     $("#lastTreatmentEnd").val($.cookie("lastTreatmentEnd")); 
     $("#StatusFilterDropDown").val($.cookie("StatusFilterDropDown")); 

     //alertify.log("States load"); 
    }, 
    "sDom": 'T<"clear">lfrtip', 
    "oTableTools": { 
     "sSwfPath": "/Scripts/DataTables-1.10.4/extensions/TableTools/swf/copy_csv_xls.swf", 
     "aButtons": [ 
      { 
       "sExtends": "xls", 
       "sButtonText": "Save Excel", 
       "mColumns": "visible" 
      } 
     ] 
    }, 
    "pagingType": "full_numbers", 
    "language": { 
     "sProcessing": "מעבד...", 
     "sLengthMenu": "הצג _MENU_ פריטים", 
     "sZeroRecords": "לא נמצאו רשומות מתאימות", 
     "sInfo": "_START_ עד _END_ מתוך _TOTAL_ רשומות", 
     "sInfoEmpty": "0 עד 0 מתוך 0 רשומות", 
     "sInfoFiltered": "(מסונן מסך _MAX_ רשומות)", 
     "sInfoPostFix": "", 
     "sSearch": "חיפוש חופשי:", 
     "sUrl": "", 
     "oPaginate": { 
      "sFirst": "ראשון", 
      "sPrevious": "קודם", 
      "sNext": "הבא", 
      "sLast": "אחרון" 
     } 
    }, 
    "aaData": data, 
    "columns": [ 
     { "mDataProp": "ID" }, 
     { "mDataProp": "OpenDate" }, 
     { "mDataProp": "NextContactDay" }, 
     { "mDataProp": "CompanyName" }, 
     { "mDataProp": "ContactName" }, 
     { "mDataProp": "Phone" }, 
     { "mDataProp": "CellPhone" }, 
     { "mDataProp": "Details" }, 
     { "mDataProp": "Status" }, 
     { "mDataProp": "TreatmentBy" }, 
     { "mDataProp": "TreatmentByID" }, 
     { "mDataProp": "ReferenceSourceID" }, 
     { "mDataProp": "ProductClassificationID" }, 
     { "mDataProp": "ImportanceID" }, 
     { "mDataProp": "StatusID" }, 
     { "mDataProp": "LastTreatmentDate" }, 
     { "mDataProp": "LastTreatmentBy" }, 
     { "mDataProp": "LastTreatmentByID" } 
    ], 
    "columnDefs": [ 
     { "width": "10%", "targets": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] }, 
     {"type" : "date", "targets": [1]}, 
     { 
      "targets": [10], 
      "visible": false, 
     }, 
     { 
      "targets": [11], 
      "visible": false 
     }, 
     { 
      "targets": [12], 
      "visible": false 
     }, 
     { 
      "targets": [13], 
      "visible": false 
     }, 
     { 
      "targets": [14], 
      "visible": false 
     }, 
     { 
      "targets": [17], 
      "visible": false 
     }, 
     { 
      "targets": [16], 
      "visible": false 
     }, 
     { 
      "targets": [15], 
      "visible": false 
     } 
    ], 
    "fnInitComplete": function() { 
     checkForHiddenFilters(); 
     $($('.panel')[1]).append($('.DTTT_container')); 
    } 
}); 

После изменения:

$('#table').DataTable({ 
    "order": [[0, "desc"]], 
    "bStateSave": true, 
    "fnStateSaveParams": function (oSettings, sValue) { 

     $.cookie("CompanySearch", $("#CompanySearch").val(), { expires: 7 }); 
     $.cookie("PhoneSearch", $("#PhoneSearch").val().replace('-', ''), { expires: 7 }); 
     $.cookie("TreatmentByFilterDropDown", $("#TreatmentByFilterDropDown").val(), { expires: 7 }); 
     $.cookie("LastTreatmentByID", $("#LastTreatmentByID").val(), { expires: 7 }); 
     $.cookie("ReferenceSourceFilterDropDown", $("#ReferenceSourceFilterDropDown").val(), { expires: 7 }); 
     $.cookie("ProductClassificationFilterDropDown", $("#ProductClassificationFilterDropDown").val(), { expires: 7 }); 
     $.cookie("ImportanceFilterDropDown", $("#ImportanceFilterDropDown").val(), { expires: 7 }); 
     $.cookie("openStart", $("#openStart").val(), { expires: 7 }); 
     $.cookie("openEnd", $("#openEnd").val(), { expires: 7 }); 
     $.cookie("treatmentStart", $("#treatmentStart").val(), { expires: 7 }); 
     $.cookie("treatmentEnd", $("#treatmentEnd").val(), { expires: 7 }); 
     $.cookie("lastTreatmentStart", $("#lastTreatmentStart").val(), { expires: 7 }); 
     $.cookie("lastTreatmentEnd", $("#lastTreatmentEnd").val(), { expires: 7 }); 
     $.cookie("StatusFilterDropDown", $("#StatusFilterDropDown").val(), { expires: 7 }); 


     //alertify.log("States Saved"); 
    }, 
    "fnStateLoadParams": function (oSettings, oData) { 
     $("#CompanySearch").val($.cookie("CompanySearch")); 
     $("#PhoneSearch").val($.cookie("PhoneSearch")); 
     $("#TreatmentByFilterDropDown").val($.cookie("TreatmentByFilterDropDown")); 
     $("#LastTreatmentByID").val($.cookie("LastTreatmentByID")); 
     $("#ReferenceSourceFilterDropDown").val($.cookie("ReferenceSourceFilterDropDown")); 
     $("#ProductClassificationFilterDropDown").val($.cookie("ProductClassificationFilterDropDown")); 
     $("#ImportanceFilterDropDown").val($.cookie("ImportanceFilterDropDown")); 
     $("#openStart").val($.cookie("openStart")); 
     $("#openEnd").val($.cookie("openEnd")); 
     $("#treatmentStart").val($.cookie("treatmentStart")); 
     $("#treatmentEnd").val($.cookie("treatmentEnd")); 
     $("#lastTreatmentStart").val($.cookie("lastTreatmentStart")); 
     $("#lastTreatmentEnd").val($.cookie("lastTreatmentEnd")); 
     $("#StatusFilterDropDown").val($.cookie("StatusFilterDropDown")); 

     //alertify.log("States load"); 
    }, 
    "sDom": 'T<"clear">lfrtip', 
    "oTableTools": { 
     "sSwfPath": "/Scripts/DataTables-1.10.4/extensions/TableTools/swf/copy_csv_xls.swf", 
     "aButtons": [ 
      { 
       "sExtends": "xls", 
       "sButtonText": "Save Excel", 
       "mColumns": "visible" 
      } 
     ] 
    }, 
    "pagingType": "full_numbers", 
    "language": { 
     "sProcessing": "מעבד...", 
     "sLengthMenu": "הצג _MENU_ פריטים", 
     "sZeroRecords": "לא נמצאו רשומות מתאימות", 
     "sInfo": "_START_ עד _END_ מתוך _TOTAL_ רשומות", 
     "sInfoEmpty": "0 עד 0 מתוך 0 רשומות", 
     "sInfoFiltered": "(מסונן מסך _MAX_ רשומות)", 
     "sInfoPostFix": "", 
     "sSearch": "חיפוש חופשי:", 
     "sUrl": "", 
     "oPaginate": { 
      "sFirst": "ראשון", 
      "sPrevious": "קודם", 
      "sNext": "הבא", 
      "sLast": "אחרון" 
     } 
    }, 
    "serverSide": true, 
    "orderMulti":false, 
    "ajax": { 
     "url": "/Entreaties/GetEntreaties", 
     "data": function (d) { 
      d.status = 0; 
      d.firstLoad = firstLoad;     
      d.jAdvanceSearch = JSON.stringify(new AdvanceSearch()); 
     }, 
     "type": "POST", 
     "dataType": "json", 
     error: function (xhr, textStatus, errorThrown) { 
      alertify.log(xhr.responseText); 
     } 
    }, 
    //"aaData": data, 
    "columns": [ 
     { "data": "ID" }, 
     { "data": "OpenDate" }, 
     { "data": "NextContactDay" }, 
     { "data": "CompanyName" }, 
     { "data": "ContactName" }, 
     { "data": "Phone" }, 
     { "data": "CellPhone" }, 
     { "data": "Details" }, 
     { "data": "Status" }, 
     { "data": "TreatmentBy" }, 
     { "data": "TreatmentByID" }, 
     { "data": "ReferenceSourceID" }, 
     { "data": "ProductClassificationID" }, 
     { "data": "ImportanceID" }, 
     { "data": "StatusID" }, 
     { "data": "LastTreatmentDate" }, 
     { "data": "LastTreatmentBy" }, 
     { "data": "LastTreatmentByID" } 
    ], 
    "columnDefs": [ 
     { "width": "10%", "targets": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] }, 
     {"type" : "date", "targets": [1]}, 
     { 
      "targets": [10], 
      "visible": false, 
     }, 
     { 
      "targets": [11], 
      "visible": false 
     }, 
     { 
      "targets": [12], 
      "visible": false 
     }, 
     { 
      "targets": [13], 
      "visible": false 
     }, 
     { 
      "targets": [14], 
      "visible": false 
     }, 
     { 
      "targets": [17], 
      "visible": false 
     }, 
     { 
      "targets": [16], 
      "visible": false 
     }, 
     { 
      "targets": [15], 
      "visible": false 
     } 
    ], 
    "fnInitComplete": function() { 
     checkForHiddenFilters(); 
     $($('.panel')[1]).append($('.DTTT_container'));   
    } 
}); 

ли эта функция всегда работает в режиме на стороне клиента, но не в стороне сервера? как я могу решить эту проблему?

спасибо

+1

показать свой код до и после –

+0

Спасибо за ответ, я отредактировал свой вопрос – Joe

ответ

1

В режиме обработки на стороне клиента, поиск, заказ и нумерация страниц выполняются с помощью JQuery DataTables плагина.

Когда вы включаете режим обработки на стороне сервера с помощью "serverSide": true, вам необходимо выполнить поиск, упорядочивание и разбиение на страницы на стороне сервера. Также обратите внимание, что есть дополнительные параметры, которые должны присутствовать в ответе при использовании режима обработки на стороне сервера.

Для получения дополнительной информации см. Processing modes.

+0

ОК, можете ли вы дать, пожалуйста, пример того, как я могу использовать текст бесплатного поиска внутри ajax? или параметр из datatable содержит его свободный ввод текста поиска? Спасибо – Joe

+0

@Joe, удалите '' serverSide ": true', чтобы включить обработку на стороне клиента или выполнить обработку на стороне сервера на стороне сервера. –