yii 分页 (ajax)
Controller:class MemberController extends Controller { public function actionmember_list() {
$this->setauth(); $sql = " SELECT * FROM vcos_member WHERE 1=1 "; $count_sql = "SELECT count(*) AS count FROM vcos_member WHERE 1=1 ";
//如果post过来的内容为空,则使用默认值 $_name = ''; $_code = ''; $_sex = '-1'; $_verification = '-1'; $_isPage = 1; //判断是否点击分页按钮(首页,1,2,.. 1:表示点击查询按钮,2表示点击分页按钮)
//分页 $pageSize = 15 ; $page = isset($_POST['page']) ? $_POST['page'] : 1; $page_s = $page == 1 ? 0 : ($page-1) * $pageSize ;
//$page = isset($_POST['page']) ? $_POST['page'] == 1 ? 0 : ($_POST['page']-1)*10 : 0; if($_POST) { // SELECT * FROM vcos_member WHERE cn_name LIKE %$member_name% OR last_name LIKE %$member_name% OR first_name LIKE %$member% // AND member_code LIKE %$member_code% // AND sex = $sex // AND member_verification = $member_verification //var_dump($_POST); $member_name = (isset($_POST['member_name'])) ? $_POST['member_name'] : ''; $member_code = (isset($_POST['member_code'])) ? $_POST['member_code'] : ''; $sex = $_POST['sex']; $member_verification = $_POST['member_verification'];
$_name = $member_name; $_code = $member_code; $_sex = $sex; $_verification = $member_verification; $_isPage = $isPage;
//如果post的内容不为默认值,拼接字符串 if($member_name != '') { $sql .= " AND (cn_name LIKE '%{$member_name}%' OR last_name LIKE '%{$member_name}%' OR first_name LIKE '%{$member_name}%') "; $count_sql .=" AND (cn_name LIKE '%{$member_name}%' OR last_name LIKE '%{$member_name}%' OR first_name LIKE '%{$member_name}%') "; }
if($member_code != '') { $sql .= " AND member_code LIKE '%$member_code%' "; $count_sql .= " AND member_code LIKE '%$member_code%' "; }
if($sex != '-1') { $sql .= " AND sex='{$sex}' "; $count_sql .= " AND sex='{$sex}' "; }
if($member_verification != '-1') { $sql .= " AND member_verification='{$member_verification}' "; $count_sql .= " AND member_verification='{$member_verification}' "; } }
//如果是点击查询按钮,重置页码为第一页
if($_isPage == '1')
{
$page = 1;
$page_s = 0;
}
$count_sql .= " ORDER BY member_id ASC "; $count = Yii::app()->m_db->createCommand($count_sql)->queryRow(); $count = (int)ceil( $count['count'] / $pageSize );
/*$criteria = new CDbCriteria(); $count = $count['count']; $pager = new CPagination($count); $pager->pageSize=15; $pager->applyLimit($criteria);*/ //$sql = "SELECT * FROM vcos_member ORDER BY member_id ASC LIMIT {$criteria->offset},{$pager->pageSize}"; $sql .= " ORDER BY member_id ASC LIMIT $page_s , $pageSize "; $member = Yii::app()->m_db->createCommand($sql)->queryAll();
$this->render('member_list',array('member'=>$member,'count'=>$count,'name'=>$_name,'code'=>$_code,'sex'=>$_sex,'verification'=>$_verification,'page'=>$page,'isPage'=>$_isPage)); }}
Html:
<form id='' class="form-horizontal" method="post" action="<?php echo Yii::app()->createUrl("Member/member_list");?>" autocomplete="on" >
<input type='hidden' name='page' value="<?php echo $page;?>"> <input type='hidden' name='isPage' value="1";>
<div class="form-group">
<label class="col-xs-2 col-sm-2 col-md-2 control-label no-padding-right"><?php echo yii::t('vcos', '会员名');?>:</label>
<div class="col-xs-8 col-sm-8 col-md-7">
<input type="text" id="member_name" name="member_name" class="col-xs-10 col-sm-8 col-md-8" value="<?php echo $name;?>" />
</div>
</div>
<div class="space-4"></div>
<div class="form-group">
<label class="col-xs-2 col-sm-2 col-md-2 control-label no-padding-right"><?php echo yii::t('vcos', '会员编号')?>:</label>
<div class="col-xs-8 col-sm-8 col-md-7">
<input type="text" id="member_code" name="member_code" class="col-xs-10 col-sm-8 col-md-8" value="<?php echo $code;?>" />
</div>
</div>
<div class="space-4"></div>
<div class="form-group">
<label class="col-xs-2 col-sm-2 col-md-2 control-label no-padding-right" for="form-field-select-1">性别:</label>
<div class="col-xs-8 col-sm-8 col-md-7">
<select class="col-xs-10 col-sm-8 col-md-8" id="form-field-select-1" name="sex">
<option value="-1" <?php if($sex == -1) {?> selected="" <?php }?>>全部</option>
<option value="1" <?php if($sex == 1) {?> selected="" <?php }?>>男</option>
<option value="2" <?php if($sex == 2) { ?> selected="" <?php }?>>女</option>
</select>
</div>
</div>
<div class="space-4"></div>
<div class="form-group">
<label class="col-xs-2 col-sm-2 col-md-2 control-label no-padding-right" for="form-field-select-1">状态:</label>
<div class="col-xs-8 col-sm-8 col-md-7">
<select class="col-xs-10 col-sm-8 col-md-8" id="form-field-select-1" name="member_verification">
<option value="-1" <?php if($verification == -1) {?> selected="" <?php }?>>全部</option>
<option value="0" <?php if($verification == 0) {?> selected="" <?php }?>>未激活</option>
<option value="1" <?php if($verification == 1) {?> selected="" <?php }?>>激活</option>
<option value="2" <?php if($verification == 2) {?> selected="" <?php }?>>冻结</option>
</select>
</div>
</div>
<input type="submit" value="<?php echo yii::t('vcos', '查询')?>" id="submit_where" class="btn btn-primary" style="margin-left: 45%"/>
<div style="clear:both"></div>
<div class="space-8"></div>
<table id="sample-table-1" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th><?php echo yii::t('vcos', '会员编号')?></th>
<th><?php echo yii::t('vcos', '会员卡号')?></th>
<th><?php echo yii::t('vcos', '姓名')?></th>
<th style="width: 5%"><?php echo yii::t('vcos', '性别')?></th>
<th><?php echo yii::t('vcos', '生日')?></th>
<th><?php echo yii::t('vcos', '国家')?></th>
<th><?php echo yii::t('vcos', '联系电话')?></th>
<th style="width: 5%"><?php echo yii::t('vcos', '等级')?></th>
<th style="width: 5%"><?php echo yii::t('vcos', '状态')?></th>
<th style="width: 7%"><?php echo yii::t('vcos', '操作')?></th>
</tr>
</thead>
<tbody>
<?php foreach($member as $key=>$row){?>
<tr>
<td><?php echo $row['member_code'];?></td>
<td><?php echo $row['smart_card_number'];?></td>
<td><?php echo $row['cn_name'];?></td>
<td><?php echo $row['sex'];?></td>
<td><?php echo date("Y/m/d",$row['date_of_birth']);?></td>
<td><?php echo $row['country_code'];?></td>
<td><?php echo $row['mobile_number'];?></td>
<td><?php echo $row['member_level'];?></td>
<td><?php echo $row['member_verification'];?></td>
<td>
<?php
$this->widget('ManipulateWidget',array(
'ControllerName'=>'Member',
'MethodName'=>'member_edit',
'id'=>$row['member_id'],
'canedit'=>TRUE,
'candelete'=>FALSE,
));
?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</form> <div class="center" id="page_div"><script src="<?php echo $theme_url; ?>/assets/js/jqPaginator.js"></script><script type="text/javascript"> jQuery(function($) { var page = <?php echo $page;?>; $('#page_div').jqPaginator({ totalPages: <?php echo $count;?>, visiblePages: 5, currentPage: page, wrapper:'<ul class="pagination"></ul>', first: '<li class="first"><a href="javascript:void(0);">首页</a></li>', prev: '<li class="prev"><a href="javascript:void(0);">«</a></li>', next: '<li class="next"><a href="javascript:void(0);">»</a></li>', last: '<li class="last"><a href="javascript:void(0);">尾页</a></li>', page: '<li class="page"><a href="javascript:void(0);">{{page}}</a></li>', onPageChange: function (num) { var val = $("input[name='page']").val(); if(num != val) { $("input[name='page']").val(num); $("input[name='isPage'").val(2); $("form").submit(); } } }); });</script>
jqPaginator.js:
(function ($) {
'use strict';
$.jqPaginator = function (el, options) {
var self = this;
self.$container = $(el);
self.$container.data('jqPaginator', self);
self.init = function () {
var opts = self.options = $.extend({}, $.jqPaginator.defaultOptions, options);
if (!opts.totalPages && !opts.totalCounts) {
throw new Error('[jqPaginator] totalCounts or totalPages is required');
}
if (!opts.totalPages && opts.totalCounts && !opts.pageSize) {
throw new Error('[jqPaginator] pageSize is required');
}
if (!opts.totalPages && opts.totalCounts && opts.pageSize) {
opts.totalPages = Math.ceil(opts.totalCounts / opts.pageSize);
}
if (opts.currentPage < 1 || opts.currentPage > opts.totalPages) {
throw new Error('[jqPaginator] currentPage is incorrect');
}
if (opts.totalPages < 1) {
throw new Error('[jqPaginator] totalPages cannot be less currentPage');
}
self.extendJquery();
self.render();
self.fireEvent(this.options.currentPage);
};
self.extendJquery = function () {
$.fn.jqPaginatorHTML = function (s) {
return s ? this.before(s).remove() : $('<p>').append(this.eq(0).clone()).html();
};
};
self.render = function () {
self.renderHtml();
self.setStatus();
self.bindEvents();
};
self.renderHtml = function () {
var html = [];
var pages = self.getPages();
for (var i = 0, j = pages.length; i < j; i++) {
html.push(self.buildItem('page', pages[i]));
}
self.isEnable('prev') && html.unshift(self.buildItem('prev', self.options.currentPage - 1));
self.isEnable('first') && html.unshift(self.buildItem('first', 1));
self.isEnable('statistics') && html.unshift(self.buildItem('statistics'));
self.isEnable('next') && html.push(self.buildItem('next', self.options.currentPage + 1));
self.isEnable('last') && html.push(self.buildItem('last', self.options.totalPages));
if (self.options.wrapper) {
self.$container.html($(self.options.wrapper).html(html.join('')).jqPaginatorHTML());
} else {
self.$container.html(html.join(''));
}
};
self.buildItem = function (type, pageData) {
var html = self.options[type]
.replace(/{{page}}/g, pageData)
.replace(/{{totalPages}}/g, self.options.totalPages)
.replace(/{{totalCounts}}/g, self.options.totalCounts);
return $(html).attr({
'jp-role': type,
'jp-data': pageData
}).jqPaginatorHTML();
};
self.setStatus = function () {
var options = self.options;
if (!self.isEnable('first') || options.currentPage === 1) {
$('[jp-role=first]', self.$container).addClass(options.disableClass);
}
if (!self.isEnable('prev') || options.currentPage === 1) {
$('[jp-role=prev]', self.$container).addClass(options.disableClass);
}
if (!self.isEnable('next') || options.currentPage >= options.totalPages) {
$('[jp-role=next]', self.$container).addClass(options.disableClass);
}
if (!self.isEnable('last') || options.currentPage >= options.totalPages) {
$('[jp-role=last]', self.$container).addClass(options.disableClass);
}
$('[jp-role=page]', self.$container).removeClass(options.activeClass);
$('[jp-role=page][jp-data=' + options.currentPage + ']', self.$container).addClass(options.activeClass);
};
self.getPages = function () {
var pages = [],
visiblePages = self.options.visiblePages,
currentPage = self.options.currentPage,
totalPages = self.options.totalPages;
if (visiblePages > totalPages) {
visiblePages = totalPages;
}
var half = Math.floor(visiblePages / 2);
var start = currentPage - half + 1 - visiblePages % 2;
var end = currentPage + half;
if (start < 1) {
start = 1;
end = visiblePages;
}
if (end > totalPages) {
end = totalPages;
start = 1 + totalPages - visiblePages;
}
var itPage = start;
while (itPage <= end) {
pages.push(itPage);
itPage++;
}
return pages;
};
self.isEnable = function (type) {
return self.options[type] && typeof self.options[type] === 'string';
};
self.switchPage = function (pageIndex) {
self.options.currentPage = pageIndex;
self.render();
};
self.fireEvent = function (pageIndex) {
return (typeof self.options.onPageChange !== 'function') || (self.options.onPageChange(pageIndex) !== false);
};
self.callMethod = function (method, options) {
switch (method) {
case 'option':
self.options = $.extend({}, self.options, options);
self.render();
break;
case 'destroy':
self.$container.empty();
self.$container.removeData('jqPaginator');
break;
default :
throw new Error('[jqPaginator] method "' + method + '" does not exist');
}
return self.$container;
};
self.bindEvents = function () {
var opts = self.options;
self.$container.off();
self.$container.on('click', '[jp-role]', function () {
var $el = $(this);
if ($el.hasClass(opts.disableClass) || $el.hasClass(opts.activeClass)) {
return;
}
var pageIndex = +$el.attr('jp-data');
if (self.fireEvent(pageIndex)) {
self.switchPage(pageIndex);
}
});
};
self.init();
return self.$container;
};
$.jqPaginator.defaultOptions = {
wrapper: '',
first: '',
prev: '',
next: '',
last: '',
page: '',
totalPages: 0,
totalCounts: 0,
pageSize: 0,
currentPage: 1,
visiblePages: 7,
disableClass: 'disabled',
activeClass: 'active',
onPageChange: null
};
$.fn.jqPaginator = function () {
var self = this,
args = Array.prototype.slice.call(arguments);
if (typeof args[0] === 'string') {
var $instance = $(self).data('jqPaginator');
if (!$instance) {
throw new Error('[jqPaginator] the element is not instantiated');
} else {
return $instance.callMethod(args[0], args[1]);
}
} else {
return new $.jqPaginator(this, args[0]);
}
};
})(jQuery);
yii 分页 (ajax)的更多相关文章
- Yii GridView Ajax 刷新
Yii GridView Ajax 刷新,当页面点击一个按钮时,刷新数据. 1.控制器 <?php class privController extends Controller{ publi ...
- phpcms列表分页ajax加载更多
1.在phpcms\modules\content\index.php文件中添加以下函数: /*列表分页ajax加载更多*/ public function homeajaxlist() { if( ...
- Yii 框架ajax搜索分页
要想实现ajax搜索分页 其实很简单 第一步:在 Yii 框架自带的搜索和分页正常运行的情况下,在视图层
- PHP+jQuery 列表分页类 ( 支持 url 分页 / ajax 分页 )
/* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8.3.mi ...
- Yii中Ajax的使用,如收藏功能
view中 <?php $cs=Yii::app()->clientScript; $cs->registerScriptFile('http://ajax.googleapis.c ...
- yii 分页样式
需求及效果图如下 没什么说的,就是修改分页,修改了CLinks分页的样式 上代码 <?php class GsearchPager extends CBasePager { const CSS_ ...
- [js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)
该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路] ...
- yii 分页查询
控制器 <?php namespace backend\controllers; use app\models\Comment; use app\models\Commentstatus; us ...
- ASP.NET MVC分页 Ajax+JsRender
前段时间整mvc的分页,倒是很顺利,参考了以下几篇博客,启发很大. http://www.cnblogs.com/tangmingjun/archive/2012/05/30/2526301.html ...
随机推荐
- PC端QQ协议解析之0825
QQ协议0825代号解析,包括客户端发送包和服务器发送包. 主要借鉴的此篇文章,我自己也是重复造轮子. 基本信息 操作系统:windows7 QQ-Version:3643 客户端到服务器: 02:数 ...
- Flash与DIV的层叠顺序问题
很多人在写页面代码时都会遇到过这样一个问题,那就是当Flash与页面中的其它HTML结构有重叠的时候,默认情况下Flash总是显示在最上 面,从而遮挡住了与它有重叠部分的HTML结构,就算为该Flas ...
- Eclipse 运行ant build.xml
在命令行cmd运行mvn clean install,ant compiler,提示上述信息,是因为 maven的这个插件要求jdk1.6,但是本地电脑环境变量jdk版本为1.7.将JAVA_HOME ...
- gc内存回收机制
判断哪些对象可回收 GC是通过对象是否存活来决定是否进行回收,判断对象是否存活主要有两种算法:引用计数算法.可达性分析算法 引用计数算法 引用计数的算法原理是给对象添加一个引用计数器,每被引用一次计数 ...
- vs2013+sql server2012 +win8.1+entity framework + linq
项目右键添加类选择“ADO.NET实体数据模型” 选择“空……” 项目会自动产生后缀.edmx的文件(ModelTest.edmx),会自动添加引用System.Runtime.Serializati ...
- 【转】深入理解Java内存模型(二)——重排序
数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性.数据依赖分下列三种类型: 名称 代码示例 说明 写后读 a = 1;b = a; 写一个变量之 ...
- C/C++中unsigned char和char的区别
代码: #include <cstdio> #include <iostream> using namespace std; int main(){ unsigned char ...
- 如何启动Service,如何停用Service(转)
如何启用Service,如何停用Service Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发现,可以使用它开发如监控之类的程序.服 ...
- jquery中的html()、text()、val()的区别
1.html(),text(),val()三种方法都是用来读取选定元素的内容: html()是用来读取元素的HTML内容(包括其Html标签),text()用来读取元素的纯文本内容,包括其后代元素 ...
- JS-商品图片放大器
//给mask添加事件,让其随着鼠标移动 superMask.onmousemove=function(){ var left=event.offsetX-175/2; left=left>0? ...