我有一个CDbActiveRecord设置,我有一个CGridView类设置实例作为一个小部件。
基本上我的最终游戏是我需要一个表,但每行包含与Active Record相关联的行的主键。
如:
<tr id="123"> <td> Column value 1 </td> <td> Col 2 </td> <td> Col 3 </td> </tr>
这就是我正在寻找的行的具体内容。
这是我到目前为止生成表格的代码。 (设置了json变量,因为它在控制器内,并且小部件以json的形式返回。)
// get the content id for the version list
$contentID_v = Yii::app()->request->getParam("id");
// setup the criteria to fetch related items
$versionCdbCriteria = new CDbCriteria;
$versionCdbCriteria->compare("contentID",$contentID_v);
// setting up the active data provider for the version
$vActiveDP = new CActiveDataProvider("FactsheetcontentVersion", array(
"criteria" => $versionCdbCriteria,
'pagination' => array('PageSize' => $this->paginationSize),
'keyAttribute'=>'vID',
));
$json_data .= $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $vActiveDP,
'columns' => array(
'title',
'created',
'createdBy'
),
'showTableOnEmpty' => 'false',
),true);
这是我为活跃记录制作的内容。
<div class="grid-view" id="yw0">
<div class="summary">Displaying 1-1 of 1 result(s).</div>
<table class="items"><thead>
<tr><th id="yw0_c0">Factsheettitle</th>
<th id="yw0_c1"><a href="jq/work/admin/index.php?r=factsheetManager/Editor
&id=25601&getV=true&_=1341694154760&FactsheetcontentVersion_sort=created">Created</a>
</th>
<th id="yw0_c2"><a href="jq/work/admin/index.php?r=factsheetManager/
Editor&id=25601&getV=true&_=1341694154760&FactsheetcontentVersion_sort=createdBy">Created By</a>
</th>
</tr></thead>
<tbody><tr class="odd"><td>Distribution</td><td>0000-00-00 00:00:00</td><td>NULL</td></tr></tbody>
</table>
<div title="jq/work/admin/index.php?r=factsheetManager/Editor&id=12&id=25601&getV=true&_=1341694154760" style="display:none" class="keys"><span>8</span></div>
</div>
答案 0 :(得分:1)
只是自己学习Yii,但这些似乎很明显? 像这样扩展小部件。
Yii::import('zii.widgets.grid.CGridView');
class MyGridView extends CGridView {
//This does depend on your data structure
$data=$this->dataProvider->data[$row];
$id = $data['id']; //(This may be an object I have not checked is so: $data->id)
public function renderTableRow($row)
{
if($this->rowCssClassExpression!==null)
{
echo '<tr id="'.$id.'" class="'.$this->evaluateExpression($this->rowCssClassExpression,array('row'=>$row,'data'=>$data)).'">';
}
else if(is_array($this->rowCssClass) && ($n=count($this->rowCssClass))>0)
echo '<tr id="'.$id.'" class="'.$this->rowCssClass[$row%$n].'">';
else
echo '<tr id="'.$id.'" >';
foreach($this->columns as $column)
$column->renderDataCell($row);
echo "</tr>\n";
}
}
现在使用它:
$json_data .= $this->widget('zii.widgets.grid.MyGridView', array(
'dataProvider' => $vActiveDP,
'columns' => array(
'title',
'created',
'createdBy'
),
'showTableOnEmpty' => 'false',
),true)
我还不熟悉YII,但您可能需要将其注册为扩展程序并将其添加到您的扩展程序目录...或者更多的是组件,我不清楚您确切的位置覆盖现有小部件的代码,一旦我知道我将编辑这个答案。