如何为CGridView的每个表行分配唯一的id属性?

时间:2012-06-18 21:52:44

标签: yii cgridview

我正在尝试为Yii的CGridView中的每个表格行分配唯一的ID。

最好是数据库表中的$data->id

我没有成功为每个呈现的id添加<tr>属性。

任何建议都会受到最高的赞赏。

5 个答案:

答案 0 :(得分:8)

CGridView有一个名为'rowHtmlOptionsExpression'的选项,你可以像下面那样声明为行分配一个id

'rowHtmlOptionsExpression' => 'array("id"=>$data->id)',

这比攻击'rowCssClassExpression'

要好 祝你好运!

答案 1 :(得分:4)

现代解决方案(自Yii 1.1.13起)

现在可以使用rowHtmlOptionsExpression属性来执行此操作,该属性允许为每个呈现的表行分配任意HTML属性。例如:

'rowHtmlOptionsExpression' => '["id" => $data->id]'

原始答案(早期版本)

不能直接使用,因为CGridView不支持它,但您可以尝试一些简单明了的解决方案。

子类CGridView(好)

只需创建自己的类MyGridView extends CGridView并覆盖renderTableRow方法,即可在每一行上吐出ID。请查看the stock implementationclass属性与您id属性的确属完全相同。

使用CSS类(不太好)

说到class属性,rowCssClassExpression属性可用于动态生成开箱即用的类。恕我直言,这是一个糟糕的解决方法,但它就在那里。

答案 2 :(得分:1)

您可以扩展CGridView以添加该功能。

或者对rowCssClassExpression有点不熟练。

'rowCssClassExpression' => '\'" data-id="\' . $data->rowID'

答案 3 :(得分:0)

试试我在这里发布的信息: How to set key value in CGrideView when grid is populated from table-view

从本质上讲,只要您对CGridview的数据提供者以其理解的形式提供data-&gt; id,它就会自动为您自动处理$ data-&gt; id内容,以便javascript轻松使用

答案 4 :(得分:-2)

CGridView.rowHtmlOptionsExpression未定义

我认为我们不能使用rowHtmlOptionsExpression