A可以使用此
选择加载的最后一页$dataProvider = new CArrayDataProvider($model->comments);
$pager=$dataProvider->pagination;
$pager->itemCount=$dataProvider->totalItemCount;
if(!Yii::app()->request->isAjaxRequest)
$pager->currentPage=$pager->pageCount;
我可以手动更新clistview
$.fn.yiiListView.update("commentsList");
但是,我不能一起做这件事:) 我也尝试将数据数组传递给javascript函数更新。 所以,我需要使用ajax添加注释,然后我需要更新clistview并选择最后一页。任何想法,我该怎么做?
答案 0 :(得分:2)
作为一种解决方法,您可以在寻呼机的“最后一页”按钮上触发click
事件。
$('#pagination li.last a').trigger('click');
答案 1 :(得分:1)
所以,我用了
div.keys
CListView用于提供更新的url数据。
每次用户添加或删除评论时,我们都会调用更新方法
$.fn.yiiListView.update('commentsList');
从div.keys获取title attr。 所以我决定在调用update方法之前手动更改标题attr。 我还需要有关总页码的信息,所以我将class添加到我的commentsList
$this->widget('bootstrap.widgets.TbListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'/comment/_comment',
'id'=>'commentsList',
'htmlOptions' => array(
"class"=>$pager->pageCount,
),
));
我写了函数来获取所有信息
var getUrlInfo = function() {
var divKeys = commentsBlock.find('div.keys'),
keys = divKeys.attr('title'),
currentPage = "",
lastPage = parseInt (commentsBlock.find('#commentsList').attr('class')) +1,
temp = keys.lastIndexOf("page=") + 5,
pageNumberIndex = temp;
while ( !isNaN(parseInt(keys[temp])) ) {
currentPage +=keys[temp];
temp++;
};
return {'divKeys':divKeys, 'keys':keys, 'currentPage':currentPage, 'lastPage':lastPage, 'pageNumberIndex':pageNumberIndex};
};
之后,我设置规则来更改标题attr以添加评论 var urlInfo = getUrlInfo(); if(urlInfo.currentPage.length){ urlInfo.divKeys.attr( '标题', urlInfo.keys.slice(0,urlInfo.pageNumberIndex)+ urlInfo.lastPage + urlInfo.keys.slice(urlInfo.pageNumberIndex + urlInfo.currentPage.length) ); }
else {
if (urlInfo.keys.indexOf('ajax')>0)
{
urlInfo.divKeys.attr('title', urlInfo.keys + "&page=" + urlInfo.lastPage);
}
else urlInfo.divKeys.attr('title', urlInfo.keys + "?page=" + urlInfo.lastPage);
}
并删除评论功能
var urlInfo = getUrlInfo();
if (!urlInfo.currentPage.length) {
console.log('da');
if (urlInfo.keys.indexOf('ajax')>0)
{
urlInfo.divKeys.attr('title', urlInfo.keys + "&page=" + urlInfo.lastPage);
}
else urlInfo.divKeys.attr('title', urlInfo.keys + "?page=" + urlInfo.lastPage);
}
我还为view.php设置了此规则
if(!Yii::app()->request->getQuery('ajax') && !Yii::app()->request->getQuery('page')) {
$pager->currentPage=$pager->pageCount;
}
答案 2 :(得分:1)
找到一个适合我的解决方案,将参数附加到$ .fn.yiiListView.update函数
JS Part:
$.fn.yiiListView.update('switchlist-designer-clistview',{
data: $(this).serialize()+"&gotoLastPage=true",
complete:function(){
//Ajax loading is finished
});
控制器中的PHP部分
if(Yii::app()->getRequest()->getParam("gotoLastPage")=="true"){
//Important to unset the gotoLastPage Parameter otherwise the pagination wont work
unset($_GET["gotoLastPage"]);
//Get the last page
$lastPage = ceil($activeDataProvider->getTotalItemCount()/$activeDataProvider->getPagination()->pageSize);
//Set the lastpage
$paginator->currentPage=$lastPage;
$activeDataProvider->setPagination($paginator);
}
答案 3 :(得分:0)
您还可以像这样更改网址选项:
$.fn.yiiListView.update('productslistview', {
url: 'http://domain/search/controller?str=test&Controller_page=' + pageNumber + '&ajax=listview'
})
最后一页你可以从你的dataProvider获取php端:
$dataProvider->getCount()