2011-03-27 40 views
3

我一直在抓我的头,我一直在使用jQuery数据表http://www.datatables.net来显示数据库中的记录。jquery datatable生成上自定义查询

我一直在使用内置的搜索字段,但它的单一字段。

我想进行报告类型搜索,例如,显示给定开始日期和结束日期之间的所有订单,订单由谁分配,订单分配给的工厂等等。我想根据多个输入来显示表格,这些输入可用于构建生成报表的查询。

所以,当时我在搜索字段中输入搜索参数并根据返回的结果重绘表格时,我的想法是使用少量表单域的表单。

我想知道如何从表单字段发送数据,以便生成查询并返回响应并重绘表格。

下面

是一个代码示例中,我一直在使用

`/ 初始化数据表/

 $('#second_tab_table').dataTable({ 
      "bProcessing": true, 
      "bServerSide": true, 
      "sAjaxSource": "components/report/report_processing.php?status=displayOrderReport", 
      "bJQueryUI": true, 
      "bStateSave": true, 
      "bAutoWidth": false, 
      "sPaginationType": "full_numbers" 
     });` 

我也看了一下自定义过滤http://www.datatables.net/examples/plug-ins/range_filtering.html,但这并不能成为目的。

我将不胜感激任何帮助。

这种方式解决了这个问题:


`$(文件)。就绪(函数(){

 /*Initialize the data table*/ 
     $('#second_tab_table2').dataTable({ 
      "bProcessing": true, 
      "bServerSide": true, 
      "sAjaxSource": "components/report/report_processing.php?status=displayOrderReport&sid=<?php echo $_REQUEST['sid']; ?>", 
      "bJQueryUI": true, 
      "bStateSave": true, 
      "bAutoWidth": false, 
      "sPaginationType": "full_numbers" 
     }); 


     $("#oc_id").live("change", function() { 

      var data = $("#formulario_personal").serialize(); 
      var dataString = 'oc_id=8&status=displayOrderReport&'+ data; 
      $.ajax({       
        type: "POST", 
        url: "components/report/report_processing.php", 
        data: dataString, 
        cache:false, 
        success: function(html){; 
          var oTable = $('#second_tab_table').dataTable(); 
          oTable.fnDraw(); 
        } 
       }); 
     }); 


});` 

看来,这将工作: http://www.datatables.net/examples/server_side/custom_vars.html

+4

你应该把你的解决方案放在你自己的问题的答案,并将其标记为正确的,以便这个问题从“未答复”列表中消失:)谢谢。 – Challe 2012-06-27 16:43:10

回答

0

正确的方法是覆盖fnServerDatafnServerParams

虽然这是版本,所以您需要确保您的版本正确。我认为fnServerData更好地支持旧版本。所以我会展示它的例子。

此功能是well documented。这是一个usage example

从他们的例子中,看看他们如何使用aoData.push语句向查询添加数据。 我正在使用它,它适用于我。所以如果你有更多的问题,请让我知道。

$(document).ready(function() { 
    $('#example').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sAjaxSource": "../examples_support/server_processing.php", 
     "fnServerData": function (sSource, aoData, fnCallback) { 
      /* Add some extra data to the sender */ 
      aoData.push({ "name": "more_data", "value": "my_value" }); 
      $.getJSON(sSource, aoData, function (json) { 
       /* Do whatever additional processing you want on the callback, then tell DataTables */ 
       fnCallback(json) 
      }); 
     } 
    }); 
});