【发布时间】:2012-06-18 21:52:44
【问题描述】:
我正在尝试为 Yii 的CGridView 中的每个表格行分配一个唯一的 ID。
最好是数据库表中的$data->id。
我未能成功为每个呈现的<tr> 添加id 属性。
任何建议将不胜感激。
【问题讨论】:
我正在尝试为 Yii 的CGridView 中的每个表格行分配一个唯一的 ID。
最好是数据库表中的$data->id。
我未能成功为每个呈现的<tr> 添加id 属性。
任何建议将不胜感激。
【问题讨论】:
CGridView 有一个名为 'rowHtmlOptionsExpression' 的选项,你可以像下面这样声明给行分配一个 id
'rowHtmlOptionsExpression' => 'array("id"=>$data->id)',
这比侵入“rowCssClassExpression”要好
祝你好运!
【讨论】:
现在可以使用rowHtmlOptionsExpression 属性来做到这一点,它允许将任意HTML 属性分配给每个呈现的表格行。例如:
'rowHtmlOptionsExpression' => '["id" => $data->id]'
直接不可能,因为CGridView 不支持它,但您可以尝试几个简单的解决方案。
只需创建您自己的类MyGridView extends CGridView 并覆盖renderTableRow 方法以在每一行上吐出ID。看看the stock implementation,它对class 属性的作用与您对id 属性所做的完全一样。
说到class 属性,rowCssClassExpression 属性可用于动态生成开箱即用的类。恕我直言,这是一个糟糕的解决方法,但它就在那里。
【讨论】:
rowHtmlOptionsExpression 只是added in Yii version 1.1.13。我正在相应地更新答案。
您可以扩展 CGridView 以添加该功能。
或者对 rowCssClassExpression 有点 hacky。
'rowCssClassExpression' => '\'" data-id="\' . $data->rowID'
【讨论】:
试试我在这里发布的信息: How to set key value in CGrideView when grid is populated from table-view
本质上,只要 CGridview 的数据提供者以它可以理解的形式提供 data->id,它就会自动为您处理 $data->id 内容,以便 javascript 轻松使用它。
【讨论】:
CGridView.rowHtmlOptionsExpression 未定义
我不认为我们可以使用rowHtmlOptionsExpression
【讨论】: