我正在嘗試爲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