【问题标题】:yii CGridView initial sortyii CGridView 初始排序
【发布时间】:2013-02-08 23:36:12
【问题描述】:

有什么方法可以设置 CGridView 的初始排序? 我有一个数据库表,其中包含: id |姓名 |描述 |创建时间... 在我的 CGridView 中,我希望在没有 id 的情况下显示我的数据(这可以通过在 CGridView 中设置列​​来完成,但我想知道是否有任何其他方法可以从 dataProvider 中消除此字段)并且我想让我的数据排序在名称 ASC 之后。我怎么能这样做,因为它总是在 id 之后排序,我无法为 CGridView 设置条件?

【问题讨论】:

  • CGridView 只显示排序后的数据。您必须在查询中进行排序(通常是CActiveDataProvider)。如果你使用 Gii 搭建脚手架,你的模型的 search 方法就是查询所在的位置。这里有一个例子:yiiframework.com/doc/api/1.1/CActiveDataProvider

标签: sorting yii cgridview


【解决方案1】:

您可以在模型中分别定义默认顺序CActiveDataProvider。以下sn-p默认按SortMeColumn列排序。

public function search()
{
  $criteria = new CDbCriteria;
  $criteria->compare('ID', $this->ID, true);
  $criteria->compare('SortMeColumn', $this->SortMeColumn, true);

  return new CActiveDataProvider($this,
        array(
           'criteria' => $criteria,
           'sort' => array(
              'defaultOrder' => array(
                 'SortMeColumn' => CSort::SORT_DESC
              ),
           ),
        ));
}

参考CSort

【讨论】:

  • 一个很好的答案。但是,如果我不总是想将此订单用作默认订单,我该怎么办?如果我有另一个页面需要在 ID 后进行默认排序,我该怎么办?
  • @tzortzik:在这种情况下,将array 传递给defaultOrder 作为参数以任何你喜欢的方式。
  • 我认为这意味着将搜索功能重载为public function search($arrDefaultOrder)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
相关资源
最近更新 更多