查询列表,将数据显示在特定的行数

1. 数据的load有三种:第一种是通过url访问,第二种是form表单提交,第三种是点击查询按钮。

    1).在view里:通过设定hidType值,form表单提交:

     a: hidType值默认为1, 翻页:


   

     b:.点击查询按钮,form表单提交:hidType传值为2。

function onClickQuery() {
    $("#hidType").val(2);
    $("#form1").submit();
}

     2).通过url访问(对应get),hidType传值为2。

     3).前两种对应的后端的action:

     Get:

   public ActionResult Index(string userId, string curpage, int? legId)

   {

    int page = 1;
    if (!string.IsNullOrEmpty(curpage))
     {
                page = int.Parse(curpage);
       }

    ViewData["curpage"] = page;

      BandingData(List, dptDate, 2, page, 0);

    // BandingData(List<Test> ListTest,int hidType, int pageNum, int rollbackCount)

   }

      Post:[HttpPost]
        public ActionResult Index(FormCollection forms)

{

        int curPage = int.Parse(forms["curPage"]);
        var pageNum = curPage;

       int hidType = int.Parse(forms["hidType"]);


        int TotalCount = listForStatus.Count();
            var pageSize = 15;
            int PageCount = (int)Math.Ceiling(TotalCount / (double)pageSize);
            //bool whetherHaveFlightTime = false;
            var test = forms["rollbackCount"];
            if (test == "")
            {
                test = "-1";
            }
            int rollbackCount = int.Parse(test);

       BandingData(list, forms["flightTime"], hidType, pageNum, rollbackCount);

}

2.  private void BandingData(List<DTO_FlightAndPrice> flightAndPriceInfoList, string dptDate, int hidType, int pageNum, int rollbackCount)

   {

       //默认进入页面,点击“查询”按钮(见js),hidtype=2. 翻页时,hidtype=1
            DateTime queryDptDate = new DateTime();
            if (hidType == 2)
            {
                if (dptDate != "")
                {
                    queryDptDate = DateTime.Parse(dptDate);
                }
            }
            count = List.Count();
            if (queryDptDate.ToString("yyyy-MM-dd") != "0001-01-01")
            {
                var item = List.Find(x => x.FlightInfo.FlightDate == queryDptDate);
                index = List.IndexOf(item);
                dateIndex = (index == -1) ? 0 : index + 1;
                pageNum = dateIndex / 15 + 1;
                rollbackCount = (index == -1) ? 0 : dateIndex - (pageNum - 1) * 15 - 2;
                ViewData["rollbackCount"] = rollbackCount;

                //数据向前(上)滚动了几条, 因此前面增加了一页, 当期页面就增加了1.
                if (rollbackCount > 0)
                {
                    pageNum++;
                }
            }
            if (rollbackCount > 0)
            {
                //向前(上)滚动了几条, 因此页面已经加了1, 这里要捡回去再计算, 然后增加rollbackCount
                skip = (pageNum - 2) * 15 + rollbackCount;
            }
            else
            {
                skip = (pageNum - 1) * 15 + rollbackCount;
            }
            if (skip < 0)
            {
                skip = 0;
            }

            flightAndPriceInfoList = flightAndPriceInfoList.Skip(skip).Take(15).ToList();
            ViewData["pagerHelper"] = new PageHelper<DTO_FlightAndPrice>(flightAndPriceInfoList, pageNum - 1, 15, count, rollbackCount);

      }
    }
}

   }


3. PageHelper:

 public PageHelper(List<T> list, int curPage, int pageSize, int totalCount, int rollBackCount = 0)
        {
            CurrentPage = curPage + 1;
            PageSize = pageSize;
            TotalCount = totalCount;
            if (PageSize > 0)
            {
                if (PageSize > 200)//每页显示数据量,自动不大于200
                {
                    PageSize = 200;
                }

                if (rollBackCount > 0)
                {
                    //数据向前滚动, 因此前面增加了一页, 除了增加的那个页面, 后面的总条目变少了rollBackCount.
                    PageCount = (int)Math.Ceiling((TotalCount - rollBackCount) / (double)PageSize) + 1;
                }
                else if (rollBackCount < 0)
                {
                    //数据向后滚动, 但第一页还要显示, 相当于总条数变多了. TotalCount - rollBackCount 就是让总条数增加  |rollBackCount| (绝对值)
                    PageCount = (int)Math.Ceiling((TotalCount - rollBackCount) / (double)PageSize);
                }
                else
                {
                    PageCount = (int)Math.Ceiling(TotalCount / (double)PageSize);
                }
                if (CurrentPage < 1)  //当前页码,自动不小于1
                {
                    CurrentPage = 1;
                }
                if (CurrentPage > PageCount) //当前页码,自动不大于总页数
                {
                    CurrentPage = PageCount;
                }
            }
            else
            {
                PageSize = 0;
                PageCount = 0;
                CurrentPage = 0;
            }
            this.AddRange(list);
        }

4.验证:
todayIndex1514 
pageNum211->22->3
rollbackCount-2(下)-1(下)2(上)1
skip(2-1)*15+(-2)(1-1)*15+(-1)(2-2)*15+2(3-2)*15+1
skip13-1=>0216
pageCount9   

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值