Php 更改下拉列表后更新yii列表视图
我想使用下拉菜单更改listview的页面大小。请帮我找到解决办法。 我读过很多文章,但不能做到这一点。你能找到我犯的错误吗 我正在使用以下代码 index.php视图的代码 下拉列表代码Php 更改下拉列表后更新yii列表视图,php,yii,Php,Yii,我想使用下拉菜单更改listview的页面大小。请帮我找到解决办法。 我读过很多文章,但不能做到这一点。你能找到我犯的错误吗 我正在使用以下代码 index.php视图的代码 下拉列表代码 <?php echo CHtml::beginForm(); ?> <?php echo CHtml::dropDownList('CategoryMst_pagesize','20', array('10'=>'10
<?php echo CHtml::beginForm(); ?>
<?php echo CHtml::dropDownList('CategoryMst_pagesize','20',
array('10'=>'10','20'=>'20','50'=>'50','100'=>'100'
),
array('class'=>'form-control',
/*'ajax'=>array(
'type'=>'GET',
'data'=>array('pagesize'=>'js:this.value'),
'ajaxUpdate':()
),*/
));
?>
<?php echo CHtml::endForm(); ?>
您确实不应该使用$'CategoryMst\u pagesize'。请改为使用 然后从我所看到的,你不记得任何地方的页面大小,在你改变它一次后,一旦你转到另一个页面,它将恢复到你以前的页面大小。我就是这样做的: 首先要记住页面的大小,因为现在你没有。我个人推荐这个,因为它真的,真的,真的很好。它还记得你的过滤器无价。 2为控制器创建一个只保存页面大小的函数
/**
* Saves the new page size for this particular model
*/
public function actionPageSize($pagesize)
{
\Yii::app()->user->setState($this->modelName() . '_pagesize', $pagesize);
}
3为页面大小创建下拉列表,我使用Select 2,但您可以使用普通下拉列表。同样的想法
<?php $this->widget('MySelect2', array(
'name' => 'pageSize',
'data'=>array('10' => '10', '25' => '25', '50' => '50', '100' => '100'),
'options'=>array('allowClear' => false, 'minimumResultsForSearch' => 30),
'htmlOptions' => array(
'data-ajax-dropdown' => $this->createUrl('pageSize'),
'style' => 'width: 80px',
'options'=>array(
(Yii::app()->user->getState($this->modelName() . '_pagesize', Yii::app()->params['defaultPageSize']))=>array('selected'=>'selected')
))));?>
附言:我知道我不应该使用。活着
5.在寻找模型的过程中就像你一样我有
return new \CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>$this->getTableAlias(false,false) . '.name asc',
),
'pagination'=>array(
'pageSize'=> \Yii::app()->user->getState(get_class($this) . '_pagesize', \Yii::app()->params['defaultPageSize']),
),
));
嘿,谢谢你的回复。。。。但事实上,我很高兴我的代码是有效的。。。。包含jquery.min文件时出现问题。。。它被收录了两次。。。因此,我无法使用javascript调用操作。再次感谢您确保使用registercorescript包含jquery,这将防止它被包含2次。是的,我已经在布局中使用标记直接包含了文件。。。。也许这就是问题所在。。。。好的,我将使用registerscript。。。非常感谢。
<?php $this->widget('MySelect2', array(
'name' => 'pageSize',
'data'=>array('10' => '10', '25' => '25', '50' => '50', '100' => '100'),
'options'=>array('allowClear' => false, 'minimumResultsForSearch' => 30),
'htmlOptions' => array(
'data-ajax-dropdown' => $this->createUrl('pageSize'),
'style' => 'width: 80px',
'options'=>array(
(Yii::app()->user->getState($this->modelName() . '_pagesize', Yii::app()->params['defaultPageSize']))=>array('selected'=>'selected')
))));?>
/*==========================
AUTOSUBMIT DROPDOWNS FOR THE PAGE SIZE
==========================*/
$('#pageSize').live('change',function(e){
var element = $(this);
jQuery.ajax({
"type": "GET",
"url": $(this).attr("data-ajax-dropdown"),
"cache": false,
"data":{pagesize: $(this).val()}
})
.success(function ( response ) {
$.fn.yiiGridView.update(element.closest('.widget.table').find('div.grid-view').attr('id'));
$.jGrowl("Pagination changed", { life: 2000 });
});
});
return new \CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>$this->getTableAlias(false,false) . '.name asc',
),
'pagination'=>array(
'pageSize'=> \Yii::app()->user->getState(get_class($this) . '_pagesize', \Yii::app()->params['defaultPageSize']),
),
));