我正在尝试为Yii的CGridView
中的每个表格行分配一个唯一的ID。如何为CGridView的每个表格行分配唯一的id属性?
最好来自数据库表中的$data->id
。
我在为每个渲染的<tr>
添加id
属性方面一直未成功。
任何建议将不胜感激。
我正在尝试为Yii的CGridView
中的每个表格行分配一个唯一的ID。如何为CGridView的每个表格行分配唯一的id属性?
最好来自数据库表中的$data->id
。
我在为每个渲染的<tr>
添加id
属性方面一直未成功。
任何建议将不胜感激。
试试我这里张贴的信息: How to set key value in CGrideView when grid is populated from table-view
从本质上说,只要你的数据提供程序的CGridview提供数据 - > ID,它能够理解的形式,它会自动处理$数据 - >为你自动编号的东西,以便它可以很容易地提供给JavaScript。
您可以扩展CGridView以添加该功能。
或者对rowCssClassExpression有些不好意思。
'rowCssClassExpression' => '\'" data-id="\' . $data->rowID'
这是现在能够使用rowHtmlOptionsExpression
属性,该属性允许指定任意的HTML属性每个渲染表行做。例如:
'rowHtmlOptionsExpression' => '["id" => $data->id]'
不能直接因为CGridView
不支持它,但是有几个简单的解决方案,你可以尝试的。
简单地创建自己的类MyGridView extends CGridView
并重写renderTableRow
方法吐出IDS的每一行上。看看the stock implementation,这对于class
属性确实是你想要为id
属性做的事情。
class
属性来说,rowCssClassExpression
属性可以用来动态生成类的开箱。恕我直言,这是一个糟糕的解决方法,但它在那里。
CGridView有一个名为“rowHtmlOptionsExpression”的选项,你可以声明,如以下指定行的一个ID
'rowHtmlOptionsExpression' => 'array("id"=>$data->id)',
它比黑客进入“rowCssClassExpression”
祝好!
CGridView.rowHtmlOptionsExpression
是不确定的
我不认为我们可以用rowHtmlOptionsExpression
你并不需要继承CgridView,如Chung说(http://stackoverflow.com/a/18711448/ 1396839)可以使用rowHtmlOptionsExpression将属性传递给表格的TR标签。此外,您可以传递具有许多属性的数组,而不仅仅是id。 – alvaropgl
@alwar:今天确实如此,但当时我没有写这个答案 - 'rowHtmlOptionsExpression'只是[在Yii版本1.1.13中添加的](http://www.yiiframework.com/files/CHANGELOG- 1.1.13.txt)。我正在更新相应的答案。 – Jon