ASP.NET+Layer流加载

开发移动端项目时,不可能一次性加载所有数据,这样子服务器和数据库压力大,多数采用“流加载”,即我们平常所接触到的“点击加载更多”,本次采用layer的流加载组件。实现方法也很简单,数据库写一个分页查询,返回数据。当我们点击“加载更多”时,执行存储过程,传入页数(每点击一次‘加载更多’页数也就加1),返回多前页数的数据。下面上代码:
前端:

div id="item1" class="mui-control-content">
            <ul id="OA_task_1" class="mui-table-view">
        
            </ul>
        </div>

JS:

layui.use('flow', function () {
       var flow = layui.flow;
       flow.lazyimg();
       flow.load({
           elem: '#OA_task_1', //绑定流加载容器
           done: function (page, next) { //执行下一页的回调
               //数据插入
               var lis = [];
               var pages = 0;
               setTimeout(function () {
                   $.ajax({
                       type: "get",
                       async: false,
                       url: "/Admin/GetData.ashx?action=GetAllSuggestList",
                       data: {
                           'Page': page
                       },
                       dataType: "json",
                       success: function (params) {
                           var list = params.data;
                           pages = params.code;
                           for (var i = 0; i < list.length; i++) {
                               var suggest = list[i];
                               var commitDate = GetTimeFormat(suggest.commitDate);
                               lis.push(`<li class="mui-table-view-cell">
                                        <div class="mui-slider-right mui-disabled">
                                            <a class="mui-btn mui-btn-red mui-icon" style="transform: translate(0px, 0px);"><span class="font14">删除</span></a>
                                        </div>
                                        <div class ="mui-slider-handle" onclick= "window.top.location.href = './feedbackDetail.aspx?ID=`+ suggest.id+`'" >
                                            <div class="mui-table-cell">
                                                <div class="feed-top">
                                                    <img src="img/feed.png" alt="">
                                                    <span class ="title"> `+suggest.title+` </span>
                                                    <span class ="type" style = "background: `+ suggest.statusColor+`;" > `+suggest.reply+` </span>
                                                    <span class ="time"> `+commitDate+` </span>
                                                </div>
                                                <div class="feed-bottom">
                                                   ` +suggest.suggest+`
                                                </div>
                                            </div>
                                        </div>
                                    </li>`)
                           }
                           var list = $(".type");
                           //for (var i = 0; i < list.length; i++) {
                           //    alert(list[i].innerHTML)

                           //    if (list[i].innerHTML=="未回复") {
                           //        list[i].style.background = "#C7C7CC";
                           //    }
                           //}
                       },
                       error: function (errmsg) {
                           alert("Ajax获取服务器数据出错了!" + errmsg);
                       }
                   });

                   // 执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页
                   // pages为Ajax返回的总页数,只有当前页小于总页数的情况下,才会继续出现加载更多
                   next(lis.join(''), page < pages); //假设总页数为 10
               }, 100);
               //
              
           }
   });
       });

后台:

//反馈列表流加载(所有)
        public void GetAllSuggestList(HttpContext context)
        {
            string Page = context.Request["Page"];
            string AcceptUserName = context.Request["UserName"];
            string SendUserName = context.Request["UserName"];
            IDataParameter[] parames = new IDataParameter[6];
            parames[0] = new SqlParameter("@n", Page);
            parames[5] = new SqlParameter("@table", "sys_UserSuggest");
            parames[4] = new SqlParameter("@reply", "");
            parames[3] = new SqlParameter("@bRead", "");
            parames[1] = new SqlParameter("@AcceptUserName", "");
            parames[2] = new SqlParameter("@SendUserName", "");
            SqlDataReader dr = DbHelperSQL.RunProcedure("GetPage", parames);
            List<UserSuggest> list = new List<UserSuggest>(); ;
            int page = 0;
            while (dr.Read())
            {
                page++;
                UserSuggest userSuggest = new UserSuggest();
                userSuggest.id = int.Parse(dr["id"].ToString());
                userSuggest.title = dr["title"].ToString();
                userSuggest.suggest = dr["suggest"].ToString();
                userSuggest.files = dr["files"].ToString();
                userSuggest.commitUserName = dr["commitUserName"].ToString();
                userSuggest.commitDate = DateTime.Parse(dr["commitDate"].ToString());
                string reply = dr["reply"].ToString();
                if (reply != "")
                {
                    userSuggest.reply = "已回复";
                    userSuggest.statusColor = "rgba(240,173,78,1)";
                }
                else
                {
                    userSuggest.reply = "未回复";
                    userSuggest.statusColor = "#C7C7CC";
                }
                userSuggest.replyUserName = dr["replyUserName"].ToString();
                string replyDate = dr["replyDate"].ToString();
                if (replyDate != "")
                {
                    userSuggest.replyDate = DateTime.Parse(replyDate);
                }
                list.Add(userSuggest);
            }
            string jsonData = JsonConvert.SerializeObject(list);
            context.Response.Write("{\"code\":" + page + ",\"msg\":\"\",\"count\":1000,\"data\":" + jsonData + "}");
        }

sqlserver2008数据库(自己设置参数条件):

 create proc GetPage
--分页查询 每页10条
(
	@n  varchar(100),
	@table varchar(100),
	@reply  varchar(100),
	@bRead varchar(100),
	@AcceptUserName  varchar(100),
	@SendUserName  varchar(100)
)
as
begin
set nocount on;  
DECLARE  @sqlcommand   NVARCHAR(MAX) = N''
IF @table = 'sys_UserMessage' and @AcceptUserName<>'' and @bRead = ''  and @SendUserName='' and @reply=''
--没有有是否读的条件  没有限定发送人
BEGIN
SET @sqlcommand =  
 'select t.* from 
(select *,ROW_NUMBER() over(order by id asc) rownum from sys_UserMessage 
where  AcceptUserName like ''%'+@AcceptUserName+'%'')t
 where t.rownum>=('+@n+'-1)*10+1 and t.rownum<='+@n+'*10'
end
else IF @table = 'sys_UserMessage' and @bRead='' and @AcceptUserName='' and @SendUserName<>''
--没有有是否读的条件  限定发送人
BEGIN
SET @sqlcommand =  
 'select t.* from 
  (select * from 
(select *,ROW_NUMBER() over(order by id asc) rownum from sys_UserMessage )as xx
where SendUserName='''+ @SendUserName+ ''')t
 where t.rownum>=('+@n+'-1)*10+1 and t.rownum<='+@n+'*10'
END
else IF @table = 'sys_UserMessage' and @bRead<>''
--有是否读的条件
BEGIN
SET @sqlcommand =  
 'select t.* from 
  (select * from 
(select *,ROW_NUMBER() over(order by id asc) rownum from sys_UserMessage 
where bRead='''+@bRead+''')as xx
where  AcceptUserName like ''%'+@AcceptUserName+'%'' or SendUserName='''+ @SendUserName+ ''')t
 where t.rownum>=('+@n+'-1)*10+1 and t.rownum<='+@n+'*10'
END
else IF @table = 'sys_UserSuggest' and @reply=''
BEGIN
SET @sqlcommand =  
 'select t.* from 
(select *,ROW_NUMBER() over(order by id asc) rownum ,
(select username from sys_UserInfo where sys_UserSuggest.commitUserID=id) as commitUserName,
(select username from sys_UserInfo where sys_UserSuggest.replyUserID=id) as replyUserName
from sys_UserSuggest)t
 where t.rownum>=('+@n+'-1)*10+1 and t.rownum<='+@n+'*10'
END
else IF @table = 'sys_UserSuggest' and @reply ='true'
BEGIN
SET @sqlcommand =  
 'select t.* from 
(select *,ROW_NUMBER() over(order by id asc) rownum ,
(select username from sys_UserInfo where sys_UserSuggest.commitUserID=id) as commitUserName,
(select username from sys_UserInfo where sys_UserSuggest.replyUserID=id) as replyUserName
from sys_UserSuggest 
where reply is null)t
 where t.rownum>=('+@n+'-1)*10+1 and t.rownum<='+@n+'*10'
END
else IF @table = 'sys_UserSuggest' and @reply ='false'
BEGIN
SET @sqlcommand =  
 'select t.* from 
(select *,ROW_NUMBER() over(order by id asc) rownum ,
(select username from sys_UserInfo where sys_UserSuggest.commitUserID=id) as commitUserName,
(select username from sys_UserInfo where sys_UserSuggest.replyUserID=id) as replyUserName
from sys_UserSuggest where reply <>'''')t
 where t.rownum>=('+@n+'-1)*10+1 and t.rownum<='+@n+'*10'
END
 print @sqlcommand
exec sp_executesql @sqlcommand
end
GO


exec GetPage 1,'sys_UserMessage','','','刘映红',''  --所有
exec GetPage 1,'sys_UserMessage','','true','刘映红',''  --已读
exec GetPage 1,'sys_UserMessage','','false','刘映红',''  --未读
exec GetPage 1,'sys_UserMessage','','','','刘映红'  --我发送的

exec GetPage 1,'sys_UserSuggest','','','',''  --全部建议

OK!代码如上,如有指教或不懂的老友欢迎留言!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值