如何在不更改 YII2 中的 url 的情况下对模式弹出窗口中的网格视图进行排序?

How to sort the grid view in a modal popup without changing the url in YII2?

我在模态弹出窗口中有一个 gridview。我试图对模型弹出窗口中的网格视图列进行排序。我尝试使用 Pjax,但它更改了页面 url。 我想在不更改 url 的情况下在模式弹出窗口中对 gridview 进行排序。 代码:

     <?php  \yii\widgets\Pjax::begin();
             echo GridView::widget([
                 'dataProvider' => $dataProvider,
                 'filterModel' => $searchModel,
                 'id' => 'data_lines_tables',
                 'columns' => [
                          [
                           'name',
                            'id'
                           ]
                         ]
                  ]);
            \yii\widgets\Pjax::end();?>

您好,有两种方法可以在模态弹出窗口中对 Cgridview 进行排序,我在 bootstrap 模态弹出窗口中尝试过。

  1. 尝试使用 CSort。请记住,他们在 $sort->attributes 中键入的内容应该与 CGridView 中的列相匹配:

    public function actionIndex(){
    $sort = new CSort();
    $sort->attributes = array(
    'employee'=>array(
      'asc'=>'employee.name',
      'desc'=>'employee.name desc',
    ),
    'company'=>array(
      'asc'=>'company.company_name',
      'desc'=>'company.company_name desc',
    ),
    );
    
    $dataProvider=new CActiveDataProvider('job', array(
     'criteria'=>array('Criteria goes here'),
     'sort'=>$sort,
    ));
    $this->render('index',array(
    'dataProvider'=>$dataProvider,
    ));
    
  2. 你也可以使用这样的排序,如果你想根据你在数据库中的字段选择的时间或id排序。

    $dataProvider=new CActiveDataProvider('job', array(
        'criteria'=>array('Criteria goes here'),
        'sort'=>array(
            'defaultOrder'=>'createTime DESC',
            ),
     ));
    

默认情况下,Pjax 将使用 pushState 来更新 url,您应该使用 :

简单地禁用它
\yii\widgets\Pjax::begin(['enablePushState' => false]);

详细了解 Pjax widget