Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2 Listview动态更新数据提供程序_Yii2_Pjax - Fatal编程技术网

Yii2 Listview动态更新数据提供程序

Yii2 Listview动态更新数据提供程序,yii2,pjax,Yii2,Pjax,我有一个列表视图,我想通过点击按钮动态更新dataProvider itemController.php: <?php public function actionList($category = ''){ $this->layout = '_notags'; $query['published'] = 1; if(!empty($category)){ $category = category::findOne(['t

我有一个列表视图,我想通过点击按钮动态更新
dataProvider

itemController.php

  <?php
    public function actionList($category = ''){
      $this->layout = '_notags';
      $query['published'] = 1;
      if(!empty($category)){
        $category = category::findOne(['title'=>$category])->id;
        $query['category_id'] = $category;
      }

        echo "<script>console.log('$category')</script>";

      $items = new ActiveDataProvider([
                    'query' => Item::find()->where($query)->orderBy('date_created DESC'),
                    'pagination' => [
                        'pageSize' => 9
                    ],
                  ]);
      return $this->render('_fresh', [
          'newitems' => $items,
          'category' => $category
      ]);
    }
    ?>
<?php
use yii\widgets\ListView;
use kop\y2sp\ScrollPager;
use yii\helpers\HtmlPurifier;
use yii\widgets\Pjax;

if(empty($category))
$genre = '';

$listview = ListView::widget([
      'id' => 'freshitems',
       'dataProvider' => $newitems,
       'itemOptions' => ['class' => 'col-xs-4 featured-item-'.$category],
       'itemView' => '_item',
       'pager' => ['negativeMargin'=>250, 'delay'=>0, 'spinnerSrc'=> '/img/loading.png','triggerOffset' => 3, 'class' => ScrollPager::className(), 'item'=>'.featured-item-' . $genre, 'enabledExtensions'=> Array( ScrollPager::EXTENSION_TRIGGER, ScrollPager::EXTENSION_SPINNER, ScrollPager::EXTENSION_NONE_LEFT, ScrollPager::EXTENSION_PAGING ) ],
       //'summary' => false
  ]);

  $this->registerJsFile('@web/js/main.js');
  $this->registerJsFile('@web/js/jquery.quickfit.js');

  Pjax::begin(['id'=>'freshitems']);
      echo HtmlPurifier::process(
       $listview
     );
  Pjax::end();

?>
main.js

$(document).ready(function() {
  $(".category-select").click("pjax:end", function() {
      $.pjax.reload({container:"#freshitems"});  //Reload GridView
  });
});
$('.btn').click(function(){
  $('#list-container').load("item/list/" + $(this).id;
});
我尝试使用jQuery更改包含以下内容的div列表:

index.php:
某类 $this->render(''u list.php',$category)

main.js

$(document).ready(function() {
  $(".category-select").click("pjax:end", function() {
      $.pjax.reload({container:"#freshitems"});  //Reload GridView
  });
});
$('.btn').click(function(){
  $('#list-container').load("item/list/" + $(this).id;
});
这样做确实会更改列表视图,但会导致ScrollPager插件出现故障(无限滚动器不再正常工作)。


在“我的视图”中动态更改Listview的数据提供程序(或完全更改Listview)的最佳方法是什么?

您可以向控制器上的操作发出AJAX请求,从中返回呈现的(最好是在新的视图文件中,使用它接收的数据提供程序作为参数)并清空HTML,然后附加它。
假设您将ListView放在一个带有某种id的容器中,以使其更简单。

您是否解决过此问题?如果是,您是否可以用答案更新问题。谢谢,不幸的是,我还没有解决这个问题。嗨,我尝试使用ajax请求获取值。我在控制台窗口中获得它。如何在yii2 gridview中显示它。请访问此链接并回答问题(如果可能)。