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

Yii 如何为CGridView的每个表行分配唯一的id属性?,yii,cgridview,Yii,Cgridview,我正在尝试为Yii的CGridView中的每个表行分配一个唯一的id 最好是数据库表中的$data->id之类的内容 我在为每个呈现的添加id属性时失败 任何建议都将不胜感激。请尝试我在此处发布的信息: 本质上,只要CGridview的数据提供者以其理解的形式提供data->id,它就会自动为您处理$data->id内容,这样javascript就可以轻松使用它。试试我在这里发布的信息: 本质上,只要CGridview的数据提供程序以其理解的形式提供数据->id,它就会自动为您处理$data

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

最好是数据库表中的
$data->id
之类的内容

我在为每个呈现的
添加
id
属性时失败


任何建议都将不胜感激。

请尝试我在此处发布的信息:


本质上,只要CGridview的数据提供者以其理解的形式提供data->id,它就会自动为您处理$data->id内容,这样javascript就可以轻松使用它。

试试我在这里发布的信息:


本质上,只要CGridview的数据提供程序以其理解的形式提供数据->id,它就会自动为您处理$data->id内容,以便javascript轻松使用。

您可以扩展CGridview以添加该功能

或者对rowCssClassExpression有点不习惯

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

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

或者对rowCssClassExpression有点不习惯

'rowCssClassExpression' => '\'" data-id="\' . $data->rowID'
现代解决方案(自Yii 1.1.13起) 现在可以使用属性来实现这一点,该属性允许为每个呈现的表行分配任意HTML属性。例如:

'rowHtmlOptionsExpression' => '["id" => $data->id]'
原始答案(早期版本) 不可能直接实现,因为
CGridView
不支持它,但是您可以尝试一些简单的解决方案

子类CGridView(良好) 只需创建自己的类
MyGridView扩展CGridView
,并重写
renderTableRow
方法在每一行上吐出ID。看一看,它对
属性的作用正是您希望对
id
属性所做的

改用CSS类(不太好) 说到
class
属性,
rowcsslassexpression
属性可用于动态生成开箱即用的类。我认为这是一个糟糕的解决方案,但它确实存在。

现代解决方案(自Yii 1.1.13以来) 现在可以使用属性来实现这一点,该属性允许为每个呈现的表行分配任意HTML属性。例如:

'rowHtmlOptionsExpression' => '["id" => $data->id]'
原始答案(早期版本) 不可能直接实现,因为
CGridView
不支持它,但是您可以尝试一些简单的解决方案

子类CGridView(良好) 只需创建自己的类
MyGridView扩展CGridView
,并重写
renderTableRow
方法在每一行上吐出ID。看一看,它对
属性的作用正是您希望对
id
属性所做的

改用CSS类(不太好)
说到
class
属性,
rowcsslassexpression
属性可用于动态生成开箱即用的类。我认为这是一个糟糕的解决方法,但它确实存在。

CGridView有一个名为“RowHtmlOptionsPression”的选项,您可以像下面那样声明以分配行id

'rowHtmlOptionsExpression' => 'array("id"=>$data->id)',
这比侵入“rowcsslassexpression”要好


祝你好运

CGridView有一个名为“RowHtmlOptionsPression”的选项,您可以像下面这样声明以分配行id

'rowHtmlOptionsExpression' => 'array("id"=>$data->id)',
这比侵入“rowcsslassexpression”要好


祝你好运

CGridView.RowHtmlOptionsPression
未定义


我认为我们不能使用
rowtmloptionsexpression
CGridView。rowtmloptionsexpression
是未定义的


我不认为我们可以使用
rowHtmlOptionsExpression

您不需要子类化CgridView,正如Chung()所说,您可以使用rowHtmlOptionsExpression将属性传递给表的TR标记。此外,您可以传递具有许多属性的数组,不仅仅是id。@alwar:今天是这样,但在我编写此答案时不是这样--
RowHtmlOptionsPression
只是。我正在相应地更新答案,您不需要像Chung()所说的那样将CgridView子类化,您可以使用RowHtmlOptionsPression将属性传递给表的TR标记。此外,您可以传递具有许多属性的数组,不仅仅是id。@alwar:今天是这样,但在我编写此答案时不是这样--
RowHtmlOptionsPression
只是。我正在相应地更新答案。