首先用過Yii 的朋友們都知道,yii裏面的CActiveDataProvider搭配CGridview真的是太方便了。數據庫
可是有一個問題,咱們必須在相應的view裏面編寫好CGridview裏面的$columns屬性。那麼就會固定了$columns的列數。有時候,要顯示的內容,是根據數據庫查詢的信息肯定的。極可能會出現列的個數是動態的。數組
問題描述:yii
下面是小龍本人遇到的例子:ide
此例子是一個程序在線評測系統相似,著名的杭電oj和poj 當對每次比賽後學生的成績進行統計時,會遇到上述問題,在CGridview的$columns除了Rank(排名),team(隊伍),Solved(解決的問題),Penalty(罰時)這些必須的列 外,還有比賽的每一個題目提交狀況須要統計並展現出來。以下圖:函數
可是每一個比賽的題目數不是固定的,因此在顯示的時候,就要想着如何構造動態的$columns?圖片
解決方案:io
首先觀察$columns是一個數組。 141301408.png渲染
因此把構造$columns這個數組放在了相應的Controllers的函數裏面: 程序
當構造好之後,對view渲染的時候,看成一個參數傳遞過去。方法
在相應的view裏面使用以下方式編寫。
如此就能夠把動態列的問題解決掉了。
總結:
其實,本方法的主要思想就是,構造$colmuns放在對應controllers的相應Action函數裏面實現。
而後看成一個參數傳遞。在對應的view裏面,,只要把'columns'=>$columns,就好了。