与服务器交互的分页组件PageComponent
2019独角兽企业重金招聘Python工程师标准>>>
Ext.define('tools.PageComponent', {extend : 'Ext.Container',requires : [],config : {params : null,itemTpl : null,//list的itemTplemptyText : "没有内容",title : null,//标题currentPage : 1,//当前页(不用配置)pageCount : null,//总共多少页(不用配置)countPerPage : 10,//每一页显示多少条数据storeName : null,//store的全名//ajax请求需要的参数url : null,method : null,xmlns : null,//当前页码的变量名pageIndexName : 'pageIndex',//每页显示条数的变量名pageSizeName : 'pageSize',resultMsgName : 'resultMsg',totolName : 'total',//每块数据的块头的名字dataContainerName : null,layout : 'fit',items : [{xtype : 'toolbar',docked : 'top',items : [{xtype : 'button',iconCls : 'arrow_left',handler : function(button) {system.backView();}}, {xtype : 'button',iconCls : 'refresh',right : 0,top : 5,handler : function(button) {var me = button.getParent().getParent();me.refreshFn();}}]}, {xtype : 'list',itemId : 'list',loadingText : false/*,listeners : {itemtap : function( list, index, target, record, e, eOpts ){
alert('test');var me = this.getParent();me.fireEvent('itemsingletap', list, index, target, record, e, eOpts );}}*/}, {xtype : 'toolbar',itemId : "toolbar",docked : 'bottom',hidden : true,items : [{xtype : 'button',itemId : 'prevBtn',iconCls : 'arrow_left',handler : function(button) {var me = this.getParent().getParent();me.prevPageFn();}}, {xtype : 'button',itemId : 'pageBtn',text : '1/1'}, {xtype : 'button',itemId : 'nextBtn',iconCls : 'arrow_right',handler : function(button) {var me = this.getParent().getParent();me.nextPageFn();}}]}]},initialize : function() {this.callParent();var list = this.down("#list");list.setEmptyText(this.getEmptyText());list.setItemTpl(this.getItemTpl());list.setStore(Ext.create(this.getStoreName()));//讲list的主要事件抛出去给当前类去实现list.on('itemtap', this.itemtap);list.on('itemdoubletap', this.itemdoubletap);list.on('itemsingletap', this.itemsingletap);list.on('itemswipe', this.itemswipe);list.on('itemtaphold', this.itemtaphold);list.on('itemtouchend', this.itemtouchend);list.on('itemtouchmove', this.itemtouchmove);list.on('itemtouchstart', this.itemtouchstart);this.refreshFn();},pagingFn : function() {var params = this.getParams();var me = this;var xmlStr = util.createArrayXmlStr(params);var pageIndexName = this.getPageIndexName();var pageSizeName = this.getPageSizeName();var len = params.length;var str = '';for(var x=0;x<len;x++) {str += params[x] + ',';}var soapStr = this.getMethod() +","+ this.getXmlns() +","+ str + pageIndexName +","+ this.getCurrentPage() +","+ pageSizeName +","+ this.getCountPerPage();var xmlData = system.setXmlParameterSoapByStr(soapStr);//自定义框架的拼接xml报文方法
console.log(xmlData);Ext.Ajax.request({url : me.getUrl(),xmlData : xmlData,scope : me,success : me.successFnOfPaging});},successFnOfPaging : function(result) {var str = $.parseXML($(result.responseText).children().text());var me = this;
console.log(str);if($(str).find(me.getDataContainerName()).text()) {this.setPageCount(Math.ceil($(str).find(me.getTotolName()).text()[0] / (this.getCountPerPage())));//$(str).find(me.getTotolName()).text()[0]不取0的话会将所有的值串起来me.down("#list").getStore().setData(this.strToData(str));//为list设置storethis.applyPageNum();//设置当前页/总页this.changeBtnStatus();//改变工具栏的显示或隐藏this.setPageCount(null);} else if($(str).find(me.getResultMsgName()).text()){//有resultMsgalert($(str).find(me.getResultMsgName()).text());return;} else {alert("没有数据");}},strToData : function(str) {var me = this;var data = [];$(str).find(me.getDataContainerName()).each(function(index) {var fields = me.down("#list").getStore().getFields();var len = fields.length;data[index] = {};for(var x=0;x<len;x++) {//自动装配xml的数据到store的data中var str = 'data['+index+'].' + fields[x] + ' = $(this).find("' + fields[x] + '").text()';eval(str);}});var toolbar = me.down("#toolbar");if (this.getPageCount() > 1) {toolbar.show();} else {toolbar.hide();}return data;},//上一页prevPageFn : function() {this.setCurrentPage(this.getCurrentPage() - 1);this.pagingFn();},//下一页nextPageFn : function() {this.setCurrentPage(this.getCurrentPage() + 1);this.pagingFn();},applyPageNum : function() {var pageBtn = this.down("#pageBtn");pageBtn.setText(this.getCurrentPage() + '/' + this.getPageCount());},changeBtnStatus : function() {var prevBtn = this.down("#prevBtn");var nextBtn = this.down("#nextBtn");if (this.getCurrentPage() == 1) {prevBtn.disable();} else {prevBtn.enable();}if (this.getCurrentPage() == this.getPageCount()) {nextBtn.disable();} else {nextBtn.enable();}},refreshFn : function() {this.setCurrentPage(1);this.pagingFn();},//list的主要事件itemdoubletap : function(list, index, target, record, e, eOpts) {},itemsingletap : function(list, index, target, record, e, eOpts) {},itemswipe : function(list, index, target, record, e, eOpts) {},itemtap : function(list, index, target, record, e, eOpts) {},itemtaphold : function(list, index, target, record, e, eOpts) {},itemtouchend : function(list, index, target, record, e, eOpts) {},itemtouchmove : function(list, index, target, record, e, eOpts) {},itemtouchstart : function(list, index, target, record, e, eOpts) {}
});
使用方法,这里比较特殊,以往都是直接使用,这个组件需要子类继承配置使用,使用的时候定义一个这个类的子类。然后根据需要配置相应的值。然后重写需要的list点击事件的方法;
比如。这里定义了一个PageListView:
Ext.define('EmergencyDrill.view.pagelist.PageListView', {extend : 'tools.PageComponent',xtype : 'pagelistview',alternateClassName : 'pagelistview',requires : [],config : {pageComponentId : 'yjylpage',params : ['userId', localStorage.username, 'flowName', 'EmergencyDrillProcess'],itemTpl : '<div><span>{title}</span></br><span>{completeTimeLimit}</span></br><span>{taskDisplayName}</span></br><span>{taskOwner}</span>' +'<tpl if="sheetStatus == 0"><span>未阅知</span><tpl else><span>已阅知</span></tpl></div>',emptyText : "没有内容",title : '应急演练列表',currentPage : 1,pageCount : null,dataContainerName : 'worksheet',storeName : 'EmergencyDrill.store.EmergencyPageListStore',url : config.serviceUrl + 'WorkSheetMobile',method : 'showListWorkSheet',xmlns : config.xmlns
// countPerPage : 10,
// pageIndexName : 'pageIndex',
// pageSizeName : 'pageSize',
// resultMsgName : 'resultMsg',
// totolName : 'total',},initialize : function() {this.callParent();},itemtap : function(list, index, target, record, e, eOpts) {system.param = {//自定义框架跳转页面是参数传递sheetId : record.get('sheetId')};system.pushView('detailview');//自定义框架跳转页面}
});
这个类中我只覆写了itemtap事件。效果图如下:
页面样式没有调,就将就看吧,这里下面的工具条没有显示出来,因为源码中我设置了需要总的条数要大于每一页显示的条数才会显示出下面的工具条(即上一页,当前页/总页,下一页);
如果总页数超过1页的话就会有这个工具条:
好了,这就是我的与服务器交互的分页组件;
转载于:https://my.oschina.net/u/259577/blog/288443
与服务器交互的分页组件PageComponent相关推荐
- android实现箭头流程列表_反思|Android 列表分页组件Paging的设计与实现:系统概述...
作者:却把清梅嗅 链接:https://github.com/qingmei2/blogs/issues/30 前言 本文将对Paging分页组件的设计和实现进行一个系统整体的概述,强烈建议 读者将本 ...
- 反思|Android 列表分页组件Paging的设计与实现:系统概述
前言 本文将对Paging分页组件的设计和实现进行一个系统整体的概述,强烈建议 读者将本文作为学习Paging 阅读优先级最高的文章,所有其它的Paging中文博客阅读优先级都应该靠后. 本文篇幅 较 ...
- 使用 java 的 displaytag1.2 分页组件使用步骤
今天我的小博客项目写完了,心情挺好,发表篇 java web开发的 分页组件使用技巧吧,在这里面, 我不想 啰嗦,直接 我把我的使用方式 写了出来,希望 给 我们为 java 分页 节省更多的时间做更 ...
- react ajax 分页,一款简单的react分页组件
父组件pagination.jsx import React, { Component } from 'react'; import PageComponent from './pageCompone ...
- Vue.js分页组件实现:diVuePagination
为什么80%的码农都做不了架构师?>>> 完整版下载地址:https://gitee.com/dgx/diVuePagination 完整版演示地址:http://dgx.gi ...
- vue php 分页组件,基于Vue.js的表格分页组件
有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫BootPage.不了解Vue.js的童鞋可 ...
- 你还不会小程序啊?手把手带你做第一个和服务器交互的小程序
2017年的时候,腾讯推出了微信小程序,当时火的一塌糊涂,圈子里几乎所有的程序员都在讨论小程序的话题:随着腾讯对小程序的功的逐步开放,2018年,尤其是在微信首页下拉增加小程序入口之后,小程序正式爆发 ...
- 基于Vue.js的表格分页组件
转载自 基于Vue.js的表格分页组件 有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫Bo ...
- Angular 自定义分页组件,自定义每页显示个数
后端返回列表是全部数据,分页前端做的,自定义分页组件实现前端分页,下图为分页效果: 1.创建page.component.html <nav class="navigation&quo ...
最新文章
- oracle 与 client端执行结果不一致_不同模式下Spark应用的执行过程
- 【OpenCV 4开发详解】Sobel算子
- P1024 一元三次方程求解(递归式二分)
- vim的保存文件和退出命令
- 【PP生产订单】收货Goods Receipt
- [单选题]PDO::ATTR_ERRMODE设置为以下哪个值时,PDO会抛出PDOException?
- 亲自实践Blazor构建桌面应用程序
- 用于混合Spock 1.x和JUnit 5测试的Maven项目设置
- CSS 属性 - 伪类和伪元素的区别
- tensorflow 旋转图片_使用TensorFlow对图像进行随机旋转的实现示例
- P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles(记忆化搜索)--- 89分
- (篇十)用结构体数组处理学生成绩、结构体类型函数求平均值
- 苹果Mac如何使用Tuxera NTFS 格式化磁盘?
- jQuery load和unload函数使用
- 金蝶KIS15.1专业版注册流程和企业认证流程
- Planetside.Software.Terragen.v0.9.43.WinALL 1CD(景观产生器)
- 图像处理之matlab中fspecial函数用法详解
- typedef定义结构体数组类型
- 资料,丰富资料,丰富资料(模式识别......)
- 一篇文章看懂MySQL的多表连接(包含左/右/全外连接)