【问题标题】:sort column by date TbJSONGridView按日期对列排序 TbJSONGridView
【发布时间】:2014-03-13 18:13:27
【问题描述】:

我想按日期对 TbJSONGridView 中的一列进行排序,我有这个代码

$this->widget(
        'bootstrap.widgets.TbJsonGridView', array(
    'dataProvider' => $model->searchPending(),    
    'type' => 'striped bordered condensed',
    'summaryText' => false,
    'cacheTTL' => 10, // cache will be stored 10 seconds (see cacheTTLType)
    'cacheTTLType' => 's', // type can be of seconds, minutes or hours
    'enablePagination' => true,
    'columns' => array(
 array(
            'name' => 'Pickup Date',
            'value' => '$data->carShippeds[0]->pickup_date',
            'type'=>'date',
        ),
))

但是我得到它的列来自相关模型,并且排序不起作用,当我单击列标题时它什么也不做。

代码有什么问题???

加布里埃尔

【问题讨论】:

    标签: php gridview yii yii-booster


    【解决方案1】:
    $data->carShippeds[0]->
    

    这向我们表明,当前模型有很多汽车出货。您只在其中显示第一个。虽然这样可行,但 Yii 无法知道您只显示第一个值,因此您的排序没有机会工作。创建一个仅选择您的第一个取货日期的视图,将您的标准与主模型连接起来,显示没有 [0]-> 的字段,它将起作用。

    【讨论】:

      【解决方案2】:

      更改以下部分:

      array(
           'name' => 'Pickup Date',
           'value' => '$data->carShippeds[0]->pickup_date',
           'type'=>'date',
      ),
      

      到这里:

      array(
           'name' => 'pickup_date',
           'header' => 'Pickup Date',
           'value' => '$data->carShippeds[0]->pickup_date',
           'type'=>'date',
      ),
      

      然后在您想要返回DataProvider 的“表单”中为此association 编写特定的排序代码,如下所示:

      return new DataProvider($query, [
                  'pagination' => [
                      'pagesize' => 20,
                  ],
                  'sort' => [
                      'sortVar' => 'sort',
                      'defaultOrder' => ['t.carShippeds.pickup_date asc'],
                      'attributes' => [
                          'pickup_date' => [
                              'asc' => 't.carShippeds.pickup_date',
                              'desc' => 't.carShippeds.pickup_date DESC',
                          ],
                          '*',
                      ],
      
                  ],
      ]);
      

      请注意,我不知道您的t.carShippedsjoin aliast 还是其他实体。替换它或向我提供有关您的 DataProvider 的更多信息,我可以提供更多帮助。

      【讨论】:

        猜你喜欢
        • 2017-08-19
        • 2014-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-01
        • 1970-01-01
        相关资源
        最近更新 更多