extjs_09_自定义分页组件

1.项目截图

2.CustomSizePagingToolbar.js

Ext.define("Ext.ux.CustomSizePagingToolbar", {// 定义的名字要和文件的名字大小写一样
	extend : "Ext.toolbar.Paging",
	alias : "widget.custompaging",// 别名
	beforSizeText : "每页",
	afterSizeText : "条",
	getCustomItems : function() {
		var me = this;
		// 自定义customComStore
		var customComStore = Ext.create("Ext.data.JsonStore", {
			fields : [ "customPageSize" ],
			data : [ {
				customPageSize : "10"
			}, {
				customPageSize : "20"
			}, {
				customPageSize : "50"
			}, {
				customPageSize : "100"
			} ]
		})
		// 自定义customComboBox
		var customComboBox = Ext.create("Ext.form.field.ComboBox", {
			itemId : "customComboId",
			store : customComStore,
			queryMode : "local",
			displayField : "customPageSize",
			valueField : "customPageSize",
			enableKeyEvents : true,// 感应键盘事件
			width : 60,
			listeners : {
				scope : me,// 作用域
				select : me.onCustomSelect,
				keydown : me.onCustomKeyDown,
				blur : me.onCustomBlur
			}
		});
		// - 表示分割线,> 表示右边显示
		return [ "-", me.beforSizeText, customComboBox, me.afterSizeText ];
	},
	onCustomSelect : function(combo, records, eOpts) {// 选择事件触发
		var me = this;
		me.store.pageSize = records[0].data.customPageSize;
		me.store.loadPage(1);// 默认加载第一页
	},
	onCustomKeyDown : function(field, e, eOpts) {// 按键事件触发
		var me = this;
		var k = e.getKey();
		if (k == e.ENTER) {
			e.stopEvent();// 停止其他事件
			me.store.pageSize = me.child("#customComboId").getValue();
			me.store.loadPage(1);
		}
	},
	onCustomBlur : function(combo, the, eOpts) {// 失去焦点事件
		var me = this;
		me.child("#customComboId").setValue(me.store.pageSize);
	},
	// 初始化界面组件
	initComponent : function() {
		var me = this;
		Ext.apply(me, {// 应用、附加
			items : me.getCustomItems()
		});
		me.callParent(arguments);
		me.child("#customComboId").setValue(me.store.pageSize);// 初始化赋值
	}
})

3.custompaging.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>自定义分页组建</title>

<!-- 引入样式,可以把ext-all.css换成ext-all-access.css |  ext-all-gray.css改变样式-->
<link rel="stylesheet" type="text/css" href="./extjs4.1/resources/css/ext-all.css">
<!-- 开发模式引入ext-all-debug.js,发布模式引入ext-all.js -->
<script type="text/javascript" src="./extjs4.1/ext-all-debug.js"></script>
<!-- 语言包 -->
<script type="text/javascript" src="./extjs4.1/locale/ext-lang-zh_CN.js"></script>
<!-- 引入自定义分页 -->
<script type="text/javascript" src="./extjs4.1/ux/CustomSizePagingToolbar.js"></script>

<script type="text/javascript">
	Ext.onReady(function() {
		Ext.QuickTips.init();//快速提示初始化
		Ext.Loader.setConfig({
			paths : {
				"Ext.ux" : "extjs4.1/ux"//文件加载路径(Ext.ux=extjs4.1/ux)
			}
		});

		// 自定义数据模型
		var jsonpModel = Ext.define("jsonpModel", {
			extend : "Ext.data.Model",
			fields : [ {
				name : "userid",
				type : "string"
			}, {
				name : "username",
				type : "string"
			}, {
				name : "dateline",
				type : "string"
			}, {
				name : "title",
				type : "string"
			} ]
		});
		// 数据
		var myStore = Ext.create("Ext.data.Store", {
			model : "jsonpModel",
			pageSize : 10,//配置每页显示记录数
			proxy : {
				type : "jsonp",
				url : "http://www.sencha.com/forum/topics-browse-remote.php",
				reader : {
					totalProperty : "totalCount",
					root : "topics"
				}
			},
			// 自动加载数据
			autoLoad : true
		});

		// 表格
		var myGrid = new Ext.grid.Panel({
			columns : [ {
				xtype : "rownumberer",
				text : "行号",
				width : 30
			}, {
				text : "用户id",
				dataIndex : "userid"
			}, {
				text : "用户姓名",
				dataIndex : "username"
			}, {
				text : "时间线",
				dataIndex : "dateline"
			}, {
				text : "标题",
				dataIndex : "title"
			} ],
			store : myStore,
			bbar : Ext.create("Ext.ux.CustomSizePagingToolbar", {// 在表格底部 配置分页
				displayInfo : true,
				store : myStore
			})
		});

		// 窗口
		var window = Ext.create("Ext.window.Window", {
			title : "学生成绩表",
			width : 600,
			height : 400,
			items : myGrid,
			layout : "fit"
		});
		window.show();
	});
</script>

</head>

<body>
	<br> 自定义分页组件
</body>
</html>

extjs_09_自定义分页组件

时间: 2024-08-11 01:34:37

extjs_09_自定义分页组件的相关文章

Angular4.+ ngx-bootstrap Pagination 自定义分页组件

Angular4 随笔(二)  --自定义分页组件 1.简介 本组件主要是实现了分页组件显示功能,通过使用 ngx-bootstrap Pagination分页组件实现. 基本逻辑: 1.创建一个分页组件,如:ng g component  pager 2.父组件调用子组件,并向子组件传入基础配置信息 3.分页组件接收父组件传参,并在模板上进行配置,在html模板上定义点击事件,调用分页子组件自身一个方法 4.分页组件定义发射器,当页码发生变化时,发射通知 5.父组件模板调用分页组件处,监听分页

vue自定义分页组件---切图网

vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重新切图,重新VUE开发的项目来说,自定义分页组件才是应万变的最佳打开方式. html <template> <div class="pagination" v-if="totalPage>1"> <span v-if="!s

DJANGO 自定义分页组件

第一次在码云上面分享代码片段,记录一下: https://gitee.com/trunkslisa/codes/14gkxi3zf9e2ulbvjnqyo90 class Pagination(object): def __init__(self, totalCount, currentPage, perPageNum=20, maxPageNum=7): # 传入: # -所有数据的个数 totalCount self.totalCount = totalCount # -当前页 curren

jquery ajax自定义分页组件(jquery.loehpagerv1.0)原创

简单的两个步骤即可实现分页功能 <script src="<%=basePath%>/resources/js/jquery-1.7.1.min.js"></script> <script src="<%=basePath%>/resources/js/jquery.loehpagerv1.0.js"></script> <script type="text/JavaScript

8.2 Django 分页组件替换自定义分页

Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """ class Pagination(object): def __init__(self, current_page, all_count, base_url, params, per_page_num=8, pager_count=11, ): """ 封装分页相关数据 :par

drf - 偏移分页组件 LimitOffsetPagination

目录 数据准备 分页组件部分源码分析一 自定义分页组件 分页组件部分源码分析二 数据准备 model.py文件 定义两个表Car表和Brand表,其中Car中的brand字段外键关联Brand表 from django.db import models class BaseModel(models.Model): is_delete = models.BooleanField(default=False) create_time = models.DateTimeField(auto_now_a

签发token、校验token、多方式登录签发token的实现、自定义认证反爬规则的认证类、admin使用自定义User表:新增用户密码密文、群查接口各种筛选组件数据准备、drf搜索过滤组件、drf排序过滤组件、drf基础分页组件

签发token 源码入口 # 前提:给一个局部禁用了所有 认证与权限 的视图类发送用户信息得到token,其实就是登录接口 # 1)rest_framework_jwt.views.ObtainJSONWebToken 的 父类 JSONWebTokenAPIView 的 post 方法 # 接收有username.password的post请求 # 2)post方法将请求得到的数据交给 rest_framework_jwt.serializer.JSONWebTokenSerializer 处

JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)

一.背景         之前在秒针工作的时候,某js高级工程师写了很多自己的组件,其中一套是分页组件,叫做st-grid.不过在我看来,bug太多,我经常给他反馈bug,我也不清楚为啥别人没有发现.    回到武汉工作后,我自己利用业余实践完善自己的官网,从前端到后端,都是自己一个人亲自搞定.    第1个分页的需求是,文章下方的评论,异步加载.第2个需求是,表格管理,比如后台管理系统,经常需要列出user.log等表的记录.   二.实例 <table class="table tab

自定义JS组件——系列1(TableGrid | Toolbar | LinkButton | Pager)

2月份第一次JS组件,写了几个:TableGrid, Toolbar, LinkButton, Pager,现在发出来. TableGrid可以包含Toolbar, Pager. Toolbar可以包含LinkButton.这样就构成了具有工具栏.分页栏的数据表格控件.也就是说,这4个组件可以独立使用,也可以结合使用.通篇只采用一种结构来编写,若能看懂编写规则,往后就可以按照这种模式自定义JS控件了. 1 var fjn=fjn?fjn:{}; 2 (function($,global){ 3