我正在尝试为 Yii 中的每个表行分配一个唯一的 ID CGridView
。
最好是$data->id
来自数据库表的东西。
我在id
为每个渲染的<tr>
.
任何建议将不胜感激。
CGridView 有一个名为 'rowHtmlOptionsExpression' 的选项,您可以像下面这样声明为行分配一个 id
'rowHtmlOptionsExpression' => 'array("id"=>$data->id)',
这比侵入“rowCssClassExpression”要好
祝你好运 !
现在可以使用rowHtmlOptionsExpression
属性来做到这一点,它允许将任意 HTML 属性分配给每个呈现的表格行。例如:
'rowHtmlOptionsExpression' => '["id" => $data->id]'
不直接可能,因为CGridView
不支持它,但是您可以尝试一些简单的解决方案。
只需创建您自己的类MyGridView extends CGridView
并覆盖该renderTableRow
方法以在每一行上吐出 id。查看stock implementation,它对class
属性所做的正是您想要对id
属性执行的操作。
说到class
属性,该rowCssClassExpression
属性可用于动态生成开箱即用的类。恕我直言,这是一个糟糕的解决方法,但它就在那里。
您可以扩展 CGridView 以添加该功能。
或者对 rowCssClassExpression 有点 hacky。
'rowCssClassExpression' => '\'" data-id="\' . $data->rowID'
Try the information I posted here: How to set key value in CGrideView when grid is populated from table-view
In essence, as long as your dataprovider to the CGridview provides the data->id in a form that it understands, it will auto handle the $data->id stuff for you automatically so that it's easily available to javascript.
CGridView.rowHtmlOptionsExpression
未定义
我不认为我们可以使用rowHtmlOptionsExpression