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