0

我正在使用下面的代码来显示数据。

$widgetOptions = array(
    'dataProvider' => $this->dataProvider,
    'itemView' => $this->viewName('list', $_REQUEST['listType']),
    'id' => 'list_view',
    'viewData' => array('passing_percent' => $passing_percent),
    'sortableAttributes'=>array(
        'stud_i',
    ),
);

$this->widget('booster.widgets.TbListView', $widgetOptions);

为了根据学生 ID 对数据进行排序,我使用了 sortableAttributes 选项。但是不是第一次按 ASC 顺序对数据进行排序,我想使用 DESC 顺序对其进行排序(即,第一次单击时,它将按 DESC 顺序对数据进行排序),因为我的查询已经以 ASC 顺序返回结果.

我尝试了下面的代码,但没有运气。

$this->dataProvider->sort->defaultOrder='stud_i DESC';

也试过:

defaultOrder'=>array(
    'stud_i'=>CSort::SORT_DESC,
)

请建议我该如何解决。

4

1 回答 1

1

当我创建提供者时,我正在这样做。看看我的一些代码......

    $sortAttrs = array(
        'date' => array(
            'asc' => 'a.id ASC',
            'desc' => 'a.id DESC',
            'default' => 'desc', // <-- default sorting per field
        ) /* Here I add more fields that I want be able to sort later */
    );

    return new CommentsSqlDataProvider($selectCmd, array(
        'keyField' => 'id',
        'totalItemCount' => $count,
        'params' => $params,
        'sort' => array(
            'attributes' => $sortAttrs,
            'defaultOrder' => array(
                'date' => CSort::SORT_DESC // <--- DEFAULT SORTING WHEN NO SORT KEY WAS SPECIFIED
            ),
        ),
        'pagination' => array(
            'pageSize' => $search->getLimit(),
        ),
    ));
于 2015-03-30T17:25:36.990 回答