【问题标题】:Dynamically set datasource for jquery datatable columns为jquery数据表列动态设置数据源
【发布时间】:2017-01-02 09:18:50
【问题描述】:

有没有一种方法可以动态设置数据表列的数据源?就像我通过硬编码每个属性名称来设置 columns.data 一样:

$.ajax({
    data: JSON.stringify(data),
    url: urlGetProviderQualificationTimeData,
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    success: function (obj) {
        if (obj.success) {
            $('#tblProds').dataTable({
            data: obj.data.ProdsDetails,
            columns: [
                { "data": "PName" },
                { "data": "PTime" }  //hardcoded mapping of properties     
            ]
            });
        }
    },
});

ProdsDetails 样本数组:

Array[2]
0:Object
    PName:"ATT",
    PTime:"6.48"   
1:Object
    PName:"CENTURYLINK",
    PTime:"3.67"

有没有办法可以摆脱这种硬编码的属性和列映射?

【问题讨论】:

  • 你想设置你从ajax调用收到的属性?
  • @Alexandru-IonutMihai 完全没有指定属性名称
  • 您想从哪里获取属性?来自obj.data?请向我们展示数组。
  • @Andy obj.data.ProdsDetails
  • 然后您可以简单地循环遍历数组并创建一个新数组。请在问题中添加一个数组示例,以便我们为您提供适当的帮助

标签: javascript jquery arrays json datatables


【解决方案1】:

这是你的数组:

var array=[
             {PName:"ATT",PTime:"6.48" },
             {PName:"CENTURYLINK",PTime:"3.67"}
          ];

现在,你应该得到所有的keys 并构建最终数组:

var obj=array[0];
var keys=[];
for(var k in obj) 
    keys.push({"data":k});

现在,keys 数组看起来像这样:

[
   {"data":"PName"},
   {"data":"PTime"}
]

最后一步是将数组分配给DataTablecolumns属性:

columns:keys

现在应该是这样的:

columns:[
          { "data": "PName" },
          { "data": "PTime" }    
]

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并通过为columns.data 属性创建一个额外的json 数组来解决此问题。使用php 函数循环遍历标头并将其放入json 数组中。

    【讨论】:

    • 有这个想法。但这是一种解决方法。我想知道我们是否有什么可以解决问题的方法
    • 没错,我认为目前这是不可能的。我刚刚检查了网站,找不到任何关于此的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2020-02-16
    相关资源
    最近更新 更多