第一个数组包含标题,另一个数组包含要填充的数据。我能够创建标题但我在根据标题填充数据时遇到问题。
$columns =([0]=>firstname, [1]=>lastname, [2]=>class);
和数据。
$data=(
array[0](['firstname']=>kevin, ['lastname']=>kaburu, ['class']=>1)
array[1](['firstname']=>kevin, ['lastname']=>kaburu, ['class']=>1)
array[2](['firstname']=>kevin, ['lastname']=>kaburu, ['class']=>1)
array[3](['firstname']=>kevin, ['lastname']=>kaburu, ['class']=>1))
让我说清楚
问题是我有两个表,第一个有列,而另一个有记录,外键指向它们所属的列。列不断变化,因此非常动态。我想把这些数据放到一张表中...... 给我可用的选项。
答案 0 :(得分:1)
参考此链接:
http://www.yiiplayground.com/index.php?r=UiModule/dataview/gridViewArray
您可以使用CArrayDataProvider
创建gridview。
此链接包含与您的要求完全匹配的示例代码。
不使用Yii方法:
<table>
<thead>
<tr>
<?php
foreach($columns as $s)
{
echo "<th>$s</th>";
}
?>
</tr>
<tbody>
<?php
foreach($data as $d)
{
echo "<tr>";
foreach($d as $cols)
echo "<td>".$cols."</td>";// hope all columns are present in second array.
echo "</tr>";
}
?>
</tbody>
</table>
答案 1 :(得分:1)
在数据声明后插入:
$dataProvider = new CArrayDataProvider($data, array(
//CDataProvider options, sort, etc..
));
更改渲染调用以包括将dataProvider传递给视图:
$this->render('view', array(
'dataProvider' => $dataProvider,
));
在视图中:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
// other CGridView options
)); ?>
答案 2 :(得分:1)
最后我设法解决了这个问题....这是我的代码
action.php的
`
$recdata = $sql->showuploadedrecords($evntid);
$coldata =$sql->showuploadedcols($evntid);
$colmns = array();
foreach ($coldata as $ky => $valu) {
$colname = $valu['column_name'];
$colmns[] = $colname;
}
$records = array();
$total = count($recdata)/count($colmns);
for ($i = 1; $i < $total +1; $i++) {
$one =array();
foreach ($recdata as $k => $v) {
if($v['relate_records']==$i){
$one[]=$v;
}
}
$records[] = $one;
}
$this->render('ViewUploaded', array('colmns' => $colmns,
'data' => $records));
}`
在我的观点上:
`echo '<tr role="row">';
foreach ($colmns as $value) {
echo '<th class="sorting_asc" role="columnheader" tabindex="0" aria-controls="DataTables_Table_2" rowspan="1" colspan="1" style="width: 219px;" aria-sort="ascending" aria-label="Rendering engine: activate to sort column descending">'. $value . '</th>';
}
echo '</tr>';
?>
</thead>
<?php
foreach ($data as $key => $v) {
echo '<tr>';
for ($k = 0; $k < count($colmns); $k++) {
foreach ($v as $cell) {
if($cell['column_name']== $colmns[$k]){
echo'<td>'.$cell['item'].'</td>';
}
}
}
echo '</tr>';
}
?>
</tbody>
</table>`