我的问题是双重的。首先,我无法正确设置CArrayDataProvider的keyField,所有我回来的都是字符串而不是值。其次,我试图使用CArrayDataProvider中的keyField在CGridView内的每一行的按钮上设置一个id。我想这样做的原因是我可以将id值向前传递给ajax函数(如果有更好的方法在Yii中执行此操作,我会全部听到)。任何帮助将非常感谢,提前感谢!
我也在Yii的论坛上发过一次这个问题。我通常不会重新发布,但我很难在那里得到答案,而不是堆栈溢出,你们是最好的!如果有人有兴趣,可以Here's the link到我原来的帖子。
以下是我如何构建我用作RAW数据的数组:
foreach ($items as $item) {
$tableRow = array("id"=>$item["Id"], "Organization"=>$item["Organization"], "Roles"=>$item["Roles"]);
$return_items[] = $tableRow;
}
这是我正在使用的CArrayDataProvider设置。我注意到了' keyField'没有给出id值,只有字符串' id':
$dataProvider=new CArrayDataProvider($return_items, array(
'keyField'=>'id',
'sort'=>array(
'attributes'=>array(
'Organization',
'Roles',
),
),
'pagination'=>array(
'pageSize'=>10,
),
));
最后,这是CGridView我尝试在视图中进行设置。按钮上显示的所有内容都是id标记,但没有值:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$authItems,
'columns'=>array(
'Organization',
'Roles',
array('name'=>'',
'type'=>'raw',
'htmlOptions'=>array('id'=>'id'),
'value'=>'CHtml::button("Edit Roles", array("data-toggle"=>"modal", "data-target"=>"#roles-modal"))'),
),
));
答案 0 :(得分:4)
尝试通过已经应用的CHtml ::按钮传递它。 E.g。
'value'=>'CHtml::button("Edit Roles", array(
"id"=>$data["id"],
"data-toggle"=>"modal",
"data-target"=>"#roles-modal"
))'),