将sTyle设置为动态jquery数据表中的所有列

时间:2013-04-22 20:35:29

标签: javascript jquery datatable

我正在研究一个巨大的自定义数据表函数,我有一个简单的问题,我需要将'sType'设置为所有'aoColumns',但这些表是动态的,因此它们可能有6或10列,并且我找不到办法,我已经尝试了以下选项:

//doesn't work
"aoColumns": [{"sType":"string", "aTargets": ["_all"]}],

//this works, but its not dynamic :/
"aoColumns": [{"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}],

我无法使用服务器端

执行此操作

obs。:我的列数为var

6 columns
"aoColumns": [{"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}],
10 columns
"aoColumns": [{"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}, {"sType":"string"}],

非常感谢

3 个答案:

答案 0 :(得分:1)

服务器端PHP:嗯,如果你在php中创建表,那么你应该能够构建一个字符串,其中包含你可以插入javacript所需的所有数组部分。

<?php
$colnum = 6;
$i = 1;

$aocolumns = array();

while($i <= $colnum){
  $aocolumns[] = '{"sType":"string"}';
  $i++;
}

$aocolumns = join(",",$aocolumns);
$aocolumns = '[' . $aocolumns . ']';

?>

然后将其放入

"aoColumns": <?=$aocolumns?>

Javascript:假设您将ajax中的列作为名为“cols”的数组返回,您可以尝试使用for循环。 :

var aocolumns = [];
for(i in cols){
  var ao = {"sType":"string"}; 
  aocolumns.push(ao);
}
alert(aocolumns);

答案 1 :(得分:1)

其他答案比他们需要的更复杂。

Javascript版本:

var i, aoColumns = [];
for (i = 0; i < totalCol; i++) {
  aoColumns.push( { 'sType': 'string' } );
}

ECMAScript 6版本:

aoColumns.fill( { 'sType': 'string' }, 0, totalCol )

如果您使用的任何库中的JavaScript array.fill命令都存在polyfill,则这可能适用于您的浏览器。

PHP(服务器端)版本:

<?php
//  array( 'stype' => "string" ); for old PHP
$columns = 6;
$aoColumns = array_fill( 0, $columns, [ 'stype' => 'string' ] );
print json_encode($aoColumns);
?>

答案 2 :(得分:0)

我通过使用parseJSON并将字符串转换为JSON来解决这个问题:

aoColumns = '[{"sType":"string"}';
i = 0;
tc = totalCol;
while(i<tc){
    aoColumns += ',';
    aoColumns += '{"sType":"string"}';
    i++;
}
aoColumns += ']';

// if totalCol == 3 then
// aoColumns will return [{"sType":"string"}, {"sType":"string"}, {"sType":"string"}]
aoColumns = $.parseJSON(aoColumns);

这很有用!