他们关于此的文档(datatables.net)似乎隐藏在一些庞大的PHP教程中。我找到的是:http://datatables.net/development/server-side/php_mysql
所有我想知道的,是如何创建一个数组,使用PHP,稍后将使用静态数据(无变量)的json_encode()来填充一个包含几个列标题和几个示例行的表数据。其中一些来自上面的教程。
<?php
$output = array(
"sEcho" => intval($_GET['sEcho']), //no idea what this is
"iTotalRecords" => $iTotal, //probably total records
"iTotalDisplayRecords" => $iFilteredTotal, //Not sure, records per page?
"aaData" => array() //setting the data array for the rows
);
$output['aaData'][] = //each row here, unsure of format
//Where do the column titles go, and the format for those?
?>
<script type="text/javascript">
$(document).ready(function() {
var aDataSet = <?php echo json_encode($output); ?>
$('#demo').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>' );
$('#example').dataTable( {
"aaData": aDataSet,
"aoColumns": aoDataSet //This would be a second json_encode PHP array, set to var aoDataSet
} );
} );
</script>
任何帮助都将不胜感激。
编辑:在user2657979的回答的帮助下,我现在回答了我的问题。下面是从PHP数组中填充DataTables标题和数据的答案。
<?php
$aoColumnDefs = array(
array(
'sTitle' => 'Column 1',
'aTargets' => array(0)
),
array(
'sTitle' => 'Column 2',
'aTargets' => array(1)
),
array(
'sTitle' => 'Column 3',
'aTargets' => array(2)
),
array(
'sTitle' => 'Column 4',
'aTargets' => array(3)
),
array(
'sTitle' => 'Column 5',
'aTargets' => array(4)
)
);
$aoRowDefs = array(
0 => array(
0 => "Row 1 data Column 1",
1 => "Row 1 data Column 2",
2 => "Row 1 data Column 3",
3 => "Row 1 data Column 4",
4 => "Row 1 data Column 5"
),
1 => array(
0 => "Row 2 data Column 1",
1 => "Row 2 data Column 2",
2 => "Row 2 data Column 3",
3 => "Row 2 data Column 4",
4 => "Row 2 data Column 5"
),
2 => array(
0 => "Row 3 data Column 1",
1 => "Row 3 data Column 2",
2 => "Row 3 data Column 3",
3 => "Row 3 data Column 4",
4 => "Row 3 data Column 5"
)
);
?>
<script type="text/javascript">
var aoRowDefs = <?php echo json_encode($aoRowDefs); ?>
var aoColumnDefs = <?php echo json_encode($aoColumnDefs); ?>
$(document).ready(function() {
$('#demo').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>' );
$('#example').dataTable( {
"aaData": aoRowDefs,
"aoColumns": aoColumnDefs
} );
} );
</script>
<div id="demo">
<div id="example">
</div>
</div>
答案 0 :(得分:0)
我的数据表没有动态标题,所以我在javascript中的配置中定义它们。
"aoColumns": [{
"sTitle": "Column 1"
}, {
"sTitle": "Column 2"
}, {
"sTitle": "Column 3"
}, {
"sTitle": "Column 4"
}, {
"sTitle": "Column 5"
}]
插件的创建者现在建议使用aoColumnDefs,然后指定列的目标。
"aoColumnDefs": [{
"sTitle": "Column 1",
"aTargets": [0]
}, {
"sTitle": "Column 2",
"aTargets": [1]
}, {
"sTitle": "Column 3",
"aTargets": [2]
}, {
"sTitle": "Column 4",
"aTargets": [3]
}, {
"sTitle": "Column 5",
"aTargets": [4]
}]
如果某些操作会影响多个列,则aoColumnDefs可以提供更大的灵活性,允许您指定多个列。
但是,如果您的列标题是动态的,则可以将json编码的数组传递给javascript中的配置。
$aoColumnDefs = array(
array(
'sTitle' => 'Column 1',
'aTargets' => array(0)
)
);
$aoColumnDefsEndcoded = json_encode($aoColumnDefs);