asp.net---jquery--ajax 实现滚动条滚动到底部分页显示

前台:aspx页面


var bgtime = $(" #date1 ").val();
        var overtime = $(" #date2 ").val();
        var gsid = "0";
        var typename = "";
        var divstyle = "";
        var bgpage; //定义开始页面
        var recordCount; //数据总条数
        var pageCount;   //总页数
        //页面加载完成执行
        $(document).ready(function(){
            //$("#date1").attr("value", getNowFormatDate());//推荐这种写法,可正常赋值
            $("#date2").attr("value", getNowFormatDate());
            bgtime = $(" #date1 ").val();
            overtime = $(" #date2 ").val();
            typename = "全部";
            $("#gs").html("");
            $("#data-content").html("");
            $("#leibie").html("");
            $("#gs").append("<div class=\"xuanze xuanze-active\" name=\"0\">全部公司<span class=\"my-icon mui-icon mui-icon-checkmarkempty\"></span></div>");
            $("#leibie").append("<div class=\"xuanze xuanze-active\" name=\"全部\">全部<span class=\"my-icon mui-icon mui-icon-checkmarkempty\"></span></div>");
            InitPage(1,10);  //这里是调用InitPage(pageIndex,pageSize)方法,pageIndex:起始页,pageSize:每页的数据条数
        });
     //监听滚轮事件
        window.onscroll = function () {
            if (getScrollHeight() == getWindowHeight() + getDocumentTop()) {       //当滚动条到底时,这里是触发内容
                //异步请求数据,局部刷新dom
                if (bgpage >= parseInt(pageCount))  //开始页数大于所有数据总页数
                {
                    alert("已经到底部了")
                }
                else {
                    alert(bgpage)  //页数
                    onscoll(bgpage, 10);调用onscoll(pageIndex,pageSize)
                }               
            }
        };
        //页面加载完成添加数据的方法
        function InitPage(pageIndex, pageSize) {
            $.ajax({
                url: "SlcBuyTp.ashx",
                type: 'post',
                //contentType: "application/json;charset=UTF-8",
                data: { "gsname": gsid, "bgtime": bgtime, "overtime": overtime, "type": typename, "pageIndex": pageIndex, "pageSize": pageSize },//encodeURI(encodeURI(typename))  escape(typename)
                cache: true,
                success: function (d) {
                    //alert(d);
                    //console.log(new Date().getTime());
                    var obj = eval('(' + d + ')');  //数组
                    recordCount = obj.table2[0].recordcount;  //记录数据总条数
                    pageCount = obj.table2[0].pagecount;      //记录总页数
                    for (var index = 0; index < obj.gsname.length; index++) {
                        var item = obj.gsname[index];
                        $("#gs").append("<div class=\"xuanze\" name=\"" + item.gsid + "\">" + item.gsname + "<span class=\"my-icon mui-icon mui-icon-checkmarkempty\"></span></div>");
                    }
                    for (var index = 0; index < obj.type.length; index++) {  //添加类型名称
                        var item = obj.type[index];
                        $("#leibie").append("<div class=\"xuanze\" name=\"" + item.leibie + "\">" + item.leibie + "<span class=\"my-icon mui-icon mui-icon-checkmarkempty\"></span></div>");
                    }
                    if (obj.datas.length == 0) {
                        var kong = "<div class=\"tb-content\"><div style=\"with:100%;hight:20px;text-align:center;position: absolute;margin: 50%;\">没有数据</div></div>"
                        $("#data-content").empty().append(kong);
                    }
                    else {   
                            for(var i=0;i<obj.datas.length;i++)
                            {
                                var item = obj.datas[i];
                                divstyle = "<div class=\"tb-content\"><table class=\"tb\"><tr><td style=\"width:35%;\">单据日期:" + item.riqi + "</td><td style=\"width:65%\">订单接收方:" + item.jsgs + "</td></tr><tr><td>物料类别:" + item.typename + "</td><td>物料名称:" + item.name + "</td></tr><tr><td>规格型号:" + item.gg + "</td><td>采购备注:" + item.beizhu + "</td></tr><tr><td>计量单位:" + item.jldw + "</td><td>数量:" + item.shuliang + "</td></tr><tr><td>需求部门:" + item.xqbm + "</td><td>本币含税金额:" + item.bbje + "</td></tr><tr><td>需求人员:" + item.xqry + "</td><td>采购部门:" + item.cgbm + "</td></tr><tr><td>采购人员:" + item.cgry + "</td><td></td></tr></table></div>";
                                $("#data-content").append(divstyle);  
                            }                                                      
                    };
                    bgpage=parseInt(pageIndex) + 1  //起始页+1
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert("请求数据失败,XMLHttpRequest 对象:" + JSON.stringify(XMLHttpRequest) + ",  错误信息:" + textStatus + ", 捕获的错误对象:" + errorThrown);
                },
            });
        }
        //滚动条到底部添加数据的方法
        function onscoll(pageIndex, pageSize) {
            $.ajax({
                url: "SlcBuyTp.ashx",
                type: 'post',
                //contentType: "application/json;charset=UTF-8",
                data: { "gsname": gsid, "bgtime": bgtime, "overtime": overtime, "type": typename, "pageIndex": pageIndex, "pageSize": pageSize },//encodeURI(encodeURI(typename))  escape(typename)
                cache: true,
                success: function (d) {
                    //alert(d);
                    //console.log(new Date().getTime());
                    var obj = eval('(' + d + ')');  //数组
                    var recordCount = obj.table2[0].recordcount;  //记录总条数
                    pageCount = obj.table2[0].pagecount;   //记录总页数
                    if (obj.datas.length == 0) {
                        var kong = "<div class=\"tb-content\"><div style=\"with:100%;hight:20px;text-align:center;position: absolute;margin: 50%;\">没有数据</div></div>"
                        $("#data-content").empty().append(kong);
                    }
                    else {
                        for (var i = 0; i < obj.datas.length; i++) {
                            var item = obj.datas[i];
                            divstyle = "<div class=\"tb-content\"><table class=\"tb\"><tr><td style=\"width:35%;\">单据日期:" + item.riqi + "</td><td style=\"width:65%\">订单接收方:" + item.jsgs + "</td></tr><tr><td>物料类别:" + item.typename + "</td><td>物料名称:" + item.name + "</td></tr><tr><td>规格型号:" + item.gg + "</td><td>采购备注:" + item.beizhu + "</td></tr><tr><td>计量单位:" + item.jldw + "</td><td>数量:" + item.shuliang + "</td></tr><tr><td>需求部门:" + item.xqbm + "</td><td>本币含税金额:" + item.bbje + "</td></tr><tr><td>需求人员:" + item.xqry + "</td><td>采购部门:" + item.cgbm + "</td></tr><tr><td>采购人员:" + item.cgry + "</td><td></td></tr></table></div>";
                            $("#data-content").append(divstyle);
                        }
                    };                 
                        bgpage = parseInt(pageIndex) + 1  //起始页+1
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert("请求数据失败,XMLHttpRequest 对象:" + JSON.stringify(XMLHttpRequest) + ",  错误信息:" + textStatus + ", 捕获的错误对象:" + errorThrown);
                },
            });
        }

 

后台:ashx页面

<%@ WebHandler Language="C#" Class="SlcBuyTp" %>

using System;
using System.Web;
using System.Data;
using cschef;

public class SlcBuyTp : IHttpHandler {
    protected static int RecordCount = 0;  //记录数据总行数
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string type;
        string datas;
        string gsbh = context.Request.Form["gsname"];//如果是get方式应该用context.Request.QueryString
        string bgtime = context.Request.Form["bgtime"];//如果是get方式应该用context.Request.QueryString
        string overtime = context.Request.Form["overtime"];//如果是get方式应该用context.Request.QueryString
        string typename = context.Request.Form["type"];//如果是get方式应该用context.Request.QueryString
        int pageIndex = CC.ToInt(context.Request.Form["pageIndex"]);  //起始页
        int pageSize =CC.ToInt(context.Request.Form["pageSize"]);//每个页面数据条数
        #region 分页配置
        if (pageIndex == 0) { pageIndex = 1; }
        #endregion
        if (gsbh == "0")
        {
            if(typename == "全部")
            {
                datas = @"select CONVERT(varchar(100), djrq, 23) riqi,wllbmc typename,ghdw jsgs,wlmc name,cpgg gg,bz beizhu,jldw jldw,sl shuliang,bbje bbje,xqbm xqbm,xqry xqry,cgbm cgbm,cgry cgry 
                        from t_cgmx where djrq between '"+bgtime+"' and '"+overtime+"'";
            }
            else
            {
                datas = @"select CONVERT(varchar(100), djrq, 23) riqi,wllbmc typename,ghdw jsgs,wlmc name,cpgg gg,bz beizhu,jldw jldw,sl shuliang,bbje bbje,xqbm xqbm,xqry xqry,cgbm cgbm,cgry cgry
                    from t_cgmx where djrq between '"+bgtime+"' and '"+overtime+"' and wllbmc='"+typename+"'";
            }
        }
        else
        {
            //gsbh!=0
            if(typename == "全部")
            {
                datas = @"select CONVERT(varchar(100), djrq, 23) riqi,wllbmc typename,ghdw jsgs,wlmc name,cpgg gg,bz beizhu,jldw jldw,sl shuliang,bbje bbje,xqbm xqbm,xqry xqry,cgbm cgbm,cgry cgry
                        from t_cgmx where djrq between '"+bgtime+"' and '"+overtime+"' and gsbh='"+gsbh+"'";
            }
            else
            {
                datas =@"select CONVERT(varchar(100), djrq, 23) riqi,wllbmc typename,ghdw jsgs,wlmc name,cpgg gg,bz beizhu,jldw jldw,sl shuliang,bbje bbje,xqbm xqbm,xqry xqry,cgbm cgbm,cgry cgry
                        from t_cgmx where djrq between '"+bgtime+"' and '"+overtime+"' and gsbh='"+gsbh+"'and wllbmc='"+typename+"'";
            }

        }
        DataTable TbDatas = new DataTable();
        TbDatas = DBHelper.DBContext.Default.GetDataTable(datas);  
        RecordCount = TbDatas.Rows.Count;    //数据总条数
        DataTable dtData = new DataTable();    //数据表
        if(RecordCount==0)    //如果没有数据
        {
            dtData = TbDatas;
        }
        else  //否则
        {
            dtData = GetPagedTable(TbDatas, pageIndex, pageSize);//调用 GetPagedTable(DataTable dt, int PageIndex, int PageSize)方法,为TbDatas进行分页
        }
        DataTable dtCount = new DataTable();  //记录TbDatas数据表的总数据条数和总页数的表
        dtCount.TableName = "table2";
        dtCount.Columns.Add("recordcount"); //给一列命名 
        dtCount.Rows.Add(RecordCount);    //添加dt的行数到dtCount
        dtCount.Columns.Add("pagecount");  //添加dt的行名,第二列
        dtCount.Rows[0]["pagecount"]=getPageCount(TbDatas.Rows.Count,pageSize);  //将总数据页数添加到pagecount列
        dtData.TableName = "datas";
        DataSet ds = new DataSet();
        ds.Tables.Add(dtData);
        ds.Tables.Add(dtCount);
        string JsonString1 = Newtonsoft.Json.JsonConvert.SerializeObject(ds);  //转换成json
        context.Response.Write(JsonString1);
    }

    /// <summary>    
    /// 对DataTable进行分页,起始页为1    
    /// </summary>    
    /// <param name="dt">查询出的数据表</param>    
    /// <param name="PageIndex">起始页</param>    
    /// <param name="PageSize">每页数据条数</param>    
    /// <returns></returns>    
    public static DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize)
    {
        if (PageIndex == 0)
            return dt;
        DataTable newdt = dt.Copy();
        newdt.Clear();
        int rowbegin = (PageIndex - 1) * PageSize;
        int rowend = PageIndex * PageSize;
        if (rowbegin >= dt.Rows.Count)
            return newdt;
        if (rowend > dt.Rows.Count)
            rowend = dt.Rows.Count;
        for (int i = rowbegin; i <= rowend - 1; i++)
        {
            DataRow newdr = newdt.NewRow();
            DataRow dr = dt.Rows[i];
            foreach (DataColumn column in dt.Columns)
            {
                newdr[column.ColumnName] = dr[column.ColumnName];
            }
            newdt.Rows.Add(newdr);
        }
        return newdt;
    }
    /// <summary>    
    /// 获取总页数    
    /// </summary>    
    /// <param name="sumCount">结果集数量</param>    
    /// <param name="pageSize">页面数量</param>    
    /// <returns></returns>    
    public static int getPageCount(int sumCount, int pageSize)
    {
        int page = sumCount / pageSize;
        if (sumCount % pageSize > 0)
        {
            page = page + 1;
        }
        return page;
    }
    public bool IsReusable {
        get {
            return false;
        }
    }

}

 

感恩:转载https://www.cnblogs.com/wangxiaoyan/p/9520259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值