0

我正在研究一个巨大的自定义数据表函数,我有一个简单的问题,我需要将“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"}],

不管怎么说,还是要谢谢你

4

3 回答 3

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);
于 2013-04-22T20:52:38.853 回答
1

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

Javascript版本:

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

ECMAScript 6 版本:

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

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

PHP(服务器端)版本:

<?php
//  array( 'stype' => "string" ); for old PHP
$columns = 6;
$aoColumns = array_fill( 0, $columns, [ 'stype' => 'string' ] );
print json_encode($aoColumns);
?>
于 2014-07-08T16:56:10.610 回答
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);

这行得通!

于 2013-04-23T14:20:31.317 回答