【发布时间】:2014-06-15 19:02:31
【问题描述】:
我的问题有两个。首先,我无法正确设置 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"))'),
),
));
【问题讨论】:
-
在你的结果集中你已经有一个 'id' 字段,从你的 $dataProvider 定义中删除 'keyField'=>'id'
-
@Alejandro 感谢您的快速回复。我试了一下,但我仍然认为它没有设置 keyField。 CArrayDataProvider 的 print_r 显示
[keyField]=>id, [rawData] => array(array(values), array(values), etc)。 id标签也从按钮上消失了,现在什么都没有了。 -
只是一个响亮的想法!尝试删除
'name'=>''...