我正在尝试为Yii的CGridView
中的每个表格行分配唯一的ID。
最好是数据库表中的$data->id
。
我没有成功为每个呈现的id
添加<tr>
属性。
任何建议都会受到最高的赞赏。
答案 0 :(得分:8)
CGridView有一个名为'rowHtmlOptionsExpression'的选项,你可以像下面那样声明为行分配一个id
'rowHtmlOptionsExpression' => 'array("id"=>$data->id)',
这比攻击'rowCssClassExpression'
要好 祝你好运!答案 1 :(得分:4)
现在可以使用rowHtmlOptionsExpression
属性来执行此操作,该属性允许为每个呈现的表行分配任意HTML属性。例如:
'rowHtmlOptionsExpression' => '["id" => $data->id]'
不能直接使用,因为CGridView
不支持它,但您可以尝试一些简单明了的解决方案。
只需创建自己的类MyGridView extends CGridView
并覆盖renderTableRow
方法,即可在每一行上吐出ID。请查看the stock implementation,class
属性与您id
属性的确属完全相同。
说到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