本文实例为大家分享了MUI实现上拉加载和下拉刷新展示的具体代码,供大家参考,具体内容如下

编写存储过程分页(此处使用T-SQL)
CREATE PROC [dbo].[Common_PageList] ( @tab nvarchar(max),---表名 @strFld nvarchar(max), --字段字符串 @strWhere varchar(max), --where条件 @PageIndex int, --页码 @PageSize int, --每页容纳的记录数 @Sort VARCHAR(255), --排序字段及规则,不用加order by @IsGetCount bit --是否得到记录总数,1为得到记录总数,0为不得到记录总数,返回记录集 ) AS declare @strSql nvarchar(max) set nocount on; if(@IsGetCount = 1) begin set @strSql='SELECT COUNT(0) FROM ' + @tab + ' WHERE ' + @strWhere end else begin set @strSql=' SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ' + @Sort + ') AS rownum, ' + @strFld + ' FROM ' + @tab + ' where ' + @strWhere + ') AS Dwhere WHERE rownum BETWEEN ' + CAST(((@PageIndex-1)*@PageSize + 1) as nvarchar(20)) + ' and ' + cast((@PageIndex*@PageSize) as nvarchar(20)) end print @strSql exec (@strSql) set nocount off;
webApi接口(ADO.NET部分封装了,此处是调用形式)
/// 测试mui下拉刷新
/// </summary>
/// <param name="flag"></param>
/// <returns></returns>
[HttpPost]
public object test(JObject data)
{
using (var db = new DbBase())
{
SqlParameter[] arr = {
new SqlParameter{ ParameterName="tab",Value=data["tab"].ToString()},
new SqlParameter{ ParameterName="strFld",Value=data["strFld"].ToString()},
new SqlParameter{ ParameterName="strWhere",Value=data["strWhere"].ToString()},
new SqlParameter{ ParameterName="PageIndex",Value=Convert.ToInt32(data["PageIndex"])},
new SqlParameter{ ParameterName="PageSize",Value=Convert.ToInt32(data["PageSize"])},
new SqlParameter{ ParameterName="Sort",Value=data["Sort"].ToString()},
new SqlParameter{ ParameterName="IsGetCount",Value=Convert.ToInt32(data["IsGetCount"])},
};
return RepositoryBase.ExecuteReader(db, "Common_PageList", arr);
}
页面实现
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello MUI</title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet" href="../css/mui.min.css" rel="external nofollow" >
<style type="text/css">
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<h1 class="mui-title">下拉刷新(单webview模式)</h1>
</header>
<div id="pullrefresh" class="mui-content mui-scroll-wrapper">
<div class="mui-scroll">
<ul id="container" class="mui-table-view mui-table-view-chevron"></ul>
</div>
</div>
<ul id="temp" class="mui-table-view" style="display: none;">
<li class="mui-table-view-cell">
<a class="mui-navigate-right">
@name
</a>
</li>
</ul>
<script src="../js/mui.js" type="text/javascript" charset="utf-8"></script>
<script>
/**
数据源分页参数对象
* */
var obj={ tab:'SystemUsers',
strFld:'code,Username',
strWhere:'1=1',
PageIndex:1,
PageSize:10,
Sort:'Username',
IsGetCount:0,
pageCount:0
}
//webApi服务器接口
var apiUrl="http://192.168.200.114:8123/api/Common/Base/test";
/**
* 定义数据源按什么html方式展示,动态生成html字符串的逻辑
**/
var drawHtml=function(data){
var html=""
for (var i=0;i<data.length;i++)
{
var temp=document.getElementById("temp").innerHTML; //模板
html+=temp.toString().replace('@name',data[i].Username); //替换参数叠加
}
return html;
}
mui.ready(function(){
/**
MUI配置项
* */
mui.init({
pullRefresh: {
container: '#pullrefresh',
down: {
callback: pulldownRefresh
}, //END 下拉刷新
up : {
contentrefresh : "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容
contentnomore:'没有更多数据了',//可选,请求完毕若没有更多数据时显示的提醒内容;
callback :pullupRefresh //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
} //END 上拉加载
}
});
//统计:数据总数、分页总数
obj.IsGetCount=1;
loadData(apiUrl,obj,0);
//初始化列表数据(第一页)
obj.IsGetCount=0;
loadData(apiUrl,obj,0,"down",function(data){
//此处实现动态绘制DOM的逻辑,根据数据源自行处理要展示的html方式
return drawHtml(data);
});
});
/*
读取数据源
url:api地址
dataObj:数据源分页查询参数对象
Timeout:指定多少时间后绘制页面DOM展示对象,
动态生成的元素代码包含在一个setTimeout函数里,
用 setTimeout,主要对于下拉刷新间隔时间
loadType:加载方式:up(上拉加载)、down(上拉刷新)
drawFunction:回调函数,处理拿到数据源,绘制DOM展示界面的html
,要接收返回的html字符串
* */
var loadData=function(url,dataObj,Timeout,loadType,drawFunction){
mui.ajax(url, {
type: "post",
data:dataObj,
async:false,
headers: {'Content-Type': 'application/json'},
success: function(data) {
//统计出数据总数
if(dataObj.IsGetCount==1)
{
obj.pageCount=Math.ceil(parseInt(data[0].Column1)/obj.PageSize) ;
return;
}
setTimeout(function() {
//动态绘制出的Dom元素,结合数据展现
var html= drawFunction(data);
if(loadType=="up") //上拉加载
{
if(obj.PageIndex==obj.pageCount)
{
//参数为true代表没有更多数据了。
mui('#pullrefresh').pullRefresh().endPullupToRefresh(true);
}
else
{
mui('#pullrefresh').pullRefresh().endPullupToRefresh();
}
//将下一页数据追加到容器
document.getElementById("container").innerHTML=document.getElementById("container").innerHTML+html;
}
else if(loadType=="down") //下拉刷新
{
// 该方法的作用是关闭“正在刷新”的样式提示,内容区域回滚顶部位置
mui('#pullrefresh').pullRefresh().endPulldownToRefresh();
//将第一页数据覆盖到容器
document.getElementById("container").innerHTML=html;
//启用上拉加载
mui('#pullrefresh').pullRefresh().enablePullupToRefresh();
}
}, Timeout);//END setTimeout();
},//END success();
error: function(xhr, type, errorThrown) {
console.log(type);
}//END error();
});//END ajax();
}//END loadData();
/**
* 下拉刷新具体业务实现
*/
function pulldownRefresh() {
console.log('重置数据,初始到第一页');
obj.PageIndex=1;
loadData(apiUrl,obj,1000,"down",function(data){
//此处实现动态绘制DOM的逻辑,根据数据源自行处理要展示的html方式
return drawHtml(data);
});
} //END pulldownRefresh() 下拉刷新函数
/**
* 上拉加载具体业务实现
*/
function pullupRefresh() {
obj.PageIndex++;//当前页累加,加载下一页的数据
console.log("加载第:"+obj.PageIndex+"页");
console.log("页总数:"+obj.pageCount);
loadData(apiUrl,obj,1000,"up",function(data){
//此处实现动态绘制DOM的逻辑,根据数据源自行处理要展示的html方式
return drawHtml(data);
});
}
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# MUI
# 上拉加载
# 下拉刷新
# js返回上一页并刷新代码整理
# MUI 上拉刷新/下拉加载功能实例代码
# mui back 返回刷新页面的实例
# 加载
# 分页
# 下一页
# 可选
# 第一页
# 正在加载
# 每页
# 大家分享
# 装了
# 到第
# 回调
# 具体内容
# 大家多多
# 存储过程
# 记录集
# 当前页
# var
# data
# test
# JObject
相关文章:
如何在企业微信快速生成手机电脑官网?
如何在建站之星网店版论坛获取技术支持?
Android使用GridView实现日历的简单功能
如何用好域名打造高点击率的自主建站?
济南网站制作的价格,历城一职专官方网站?
建站之星安装模板失败:服务器环境不兼容?
网站代码制作软件有哪些,如何生成自己网站的代码?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何选择高效稳定的ISP建站解决方案?
如何通过VPS建站无需域名直接访问?
存储型VPS适合搭建中小型网站吗?
小型网站建站如何选择虚拟主机?
如何通过IIS搭建网站并配置访问权限?
如何通过智能用户系统一键生成高效建站方案?
利用JavaScript实现拖拽改变元素大小
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
内部网站制作流程,如何建立公司内部网站?
如何通过FTP服务器快速搭建网站?
为什么Go需要go mod文件_Go go mod文件作用说明
建站主机选哪种环境更利于SEO优化?
已有域名和空间,如何快速搭建网站?
个人摄影网站制作流程,摄影爱好者都去什么网站?
建站主机系统SEO优化与智能配置核心关键词操作指南
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何快速搭建支持数据库操作的智能建站平台?
专业公司网站制作公司,用什么语言做企业网站比较好?
如何用PHP快速搭建CMS系统?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何快速搭建高效WAP手机网站?
制作网页的网站有哪些,电脑上怎么做网页?
如何通过主机屋免费建站教程十分钟搭建网站?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
专业网站建设制作报价,网页设计制作要考什么证?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
网站制作话术技巧,网站推广做的好怎么话术?
建站主机选购指南:核心配置优化与品牌推荐方案
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何在新浪SAE免费搭建个人博客?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
山东云建站价格为何差异显著?
盘锦网站制作公司,盘锦大洼有多少5G网站?
实例解析angularjs的filter过滤器
如何在腾讯云服务器快速搭建个人网站?
建站之星导航如何优化提升用户体验?
微信推文制作网站有哪些,怎么做微信推文,急?
*请认真填写需求信息,我们会在24小时内与您取得联系。