[英]Yii CArrayDataProvider sorting all columns
嗨,我想為CGridView中的所有字段設置排序方式,而不必手動寫下來。 有任何想法嗎?
$this->widget('application.widgets.GridView', array(
'dataProvider'=>new CArrayDataProvider($offers,array(
'sort'=>array(
'attributes'=> 'AUTOMATICALLY TAKE ALL',
),
'pagination'=>array(
'pageSize'=>10,
),
)
),
'enableSorting'=>true,
...
現在,我必須編寫要排序的所有列(=屬性)。 但是我只想要網格中定義的所有內容。
您不需要星號功能,因為您可以使用數組中的鍵:
$this->widget('application.widgets.GridView', array(
'dataProvider'=>new CArrayDataProvider($offers,array(
'sort'=>array(
'attributes'=> array_keys($offers[0]),
),
...
它僅適用於CActiveDataProvider,請參見CSort.php源代碼 ,方法resolveAttribute。
public function resolveAttribute($attribute)
{
if($this->attributes!==array())
$attributes=$this->attributes;
elseif($this->modelClass!==null)
$attributes=$this->getModel($this->modelClass)->attributeNames();
else
return false;
foreach($attributes as $name=>$definition)
{
if(is_string($name))
{
if($name===$attribute)
return $definition;
}
elseif($definition==='*')
{
if($this->modelClass!==null && $this->getModel($this->modelClass)->hasAttribute($attribute))
return $attribute;
}
elseif($definition===$attribute)
return $attribute;
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.