【问题标题】:sAjaxSource ParamssAjaxSource 参数
【发布时间】:2013-03-25 02:44:30
【问题描述】:

如果我有一个 sAjaxSource,我可以通过它传递参数以使我的页面更灵活吗?这是我现在的样子:

"sAjaxSource": "Data/IndustryTable?region_type=4&region_code=51&ind_min=10&ind_max=99"

最终目标是当用户登陆页面时,预定义参数会加载特定数据。在用户对更新参数的其他信息进行选择后,然后更新数据表。

这是大多数 准备函数

        $(document).ready(function () {
        var anOpen = [];
        var oTable = $('#VADataTable').dataTable
        ({
            //                "sDom": 'T<"clear">lfrtip',
            //                "oTableTools":
            //                        {
            //                            "sSwfPath": "/swf/copy_csv_xls_pdf.swf"
            //                        }, //flash must be enabled
            "iDisplayLength": 5, //defalut amount of rows shown on page                
            "bServerSide": false, //uses sever for filter curently turned off                                                
            "bFilter": false, //makes columns clickable to filter 
            "bProcessing": true,
            //"bserverSide":true,
            "bJQueryUI": true, //enables user interface 
            "bSort": true, //sorting for columns                               
            "bScrollInfinite": true, //using this takes away ddl of selection                
            "sAjaxSource": "Data/IndustryTable?region_type=4&region_code=51&ind_min=10&ind_max=99",   //where ajax commands renders results                              
            "sScrollY": "200px",
            "sScrollX": "100%",
            "sScrollXInner": "100%",
            "bScrollCollapse": true,

【问题讨论】:

  • 不...通过硬编码值来解决
  • @TroyBryant 我尝试过同样的事情,但在页面加载后无法更新参数。基本上我将用户过滤器查询参数存储在数据库中以用于报告目的,并在用户显示其保存的报告时检索它。在排序中想要存储数据表状态..

标签: javascript asp.net-mvc jquery datatables


【解决方案1】:

使用您的示例代码,它看起来像这样:

$(document).ready(function () {
var anOpen = [];
var oTable = $('#VADataTable').dataTable
({
    //                "sDom": 'T<"clear">lfrtip',
    //                "oTableTools":
    //                        {
    //                            "sSwfPath": "/swf/copy_csv_xls_pdf.swf"
    //                        }, //flash must be enabled
    "iDisplayLength": 5, //defalut amount of rows shown on page                
    "bServerSide": false, //uses sever for filter curently turned off                                                
    "bFilter": false, //makes columns clickable to filter 
    "bProcessing": true,
    //"bserverSide":true,
    "bJQueryUI": true, //enables user interface 
    "bSort": true, //sorting for columns                               
    "bScrollInfinite": true, //using this takes away ddl of selection                
    "sAjaxSource": "Data/IndustryTable",   //I use a custom .aspx page for my source
    "fnServerParams": function ( aoData ) {
         aoData.push( { "name": "region_type", "value": "4" },
                      { "name": "region_code", "value": "51"},
                      { "name": "ind_min", "value": "10"},
                      { "name": "ind_max", "value": "99"} );
    },                      
    "sScrollY": "200px",
    "sScrollX": "100%",
    "sScrollXInner": "100%",
    "bScrollCollapse": true,
    ...

这样的设置将传递所有正常的 Datatables 参数以及 region_type、region_code、ind_min 和 ind_max。

在sAjax源代码中,你可以像平常一样检索这些参数(我用的是VB)

    Dim RegionType As Integer = Request("region_type")

【讨论】:

    【解决方案2】:

    显然 fnServerParams 不适用于旧版本的数据表。 使用 PHP 怎么样:

    ...
    "bScrollInfinite": true, //using this takes away ddl of selection                
    "sAjaxSource": "Data/IndustryTable?region_type=<?=$_GET['region_type'];?>&region_code=<?=$_GET['region_code'];?>&ind_min=<?=$_GET['ind_min'];?>&ind_max=<?=$_GET['ind_max'];?>",   //where ajax commands renders results                              
    "sScrollY": "200px",
    ...
    

    【讨论】:

      【解决方案3】:

      你想使用的方式不是datatbles使用的方式,所以尽量使用fnServerParams

      $('#example').dataTable( {
          "bProcessing": true,
          "bServerSide": false,
          "sAjaxSource": "scripts/server_processing.php",
          "fnServerParams": function ( aoData ) {
            aoData.push( { "name": "more_data", "value": "my_value" } );
          }
        } );
      

      【讨论】:

      • 谢谢,但现在数据表没有返回任何值。在 chrome 中检查我的控制台,页面上的第一个数据表现在被一起跳过了
      • ajax 请求到达你的服务器了吗?
      • Nope "sAjaxSource": "Data/IndustryTable?region_type=4&region_code=51&ind_min=10&ind_max=99" // region_type region_code ind min 和 max 需要是参数,而不是现在硬编码并在可能的情况下通过.
      • 你介意格式化一个例子吗...我正在处理数据表的实时示例,但只是没有陷入
      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多