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中显示它。请访问此链接并回答问题(如果可能)。