zoukankan      html  css  js  c++  java
  • 分页(以汽车表为例)

    【法一】2015.8.9

    aspx界面:

    <body>

    <asp:Repeater ID="Repeater1" runat="server">

    <div>

    <HeaderTemplate>

    <ul>

    </HeaderTemplate>

    <ItemTemplate>

    <li><%#Eval("Name")%>(<%#("Price")%>)</li>

    </ItemTemplate>

    <FooterTemplate>

    </ul>

    </FooterTemplate>

    </div>

    后端代码:

    private MyDBDataContext_Context=new MyDBDataContext();

    private const int PAGESIZE=3;

    public List<Car>GetPagedCar(int pageNO)

    {

         var query=_Context.Car.Skip(PAGESIZE*(pageNO-1)).Take(PAGESIZE);

         return query.ToList();

    }

    public int GetPageCount()

    {

        int rowsCount=_Context.Car.Count;//获得总行数

        int pageCount=(int)Math.Ceiling(1.0*(rowsCount/PAGESIZE));//计算总页数

        return pageCount;

    }

    protected void Page_Load(object sender,EventArgs e)

    {

         int nowPage=1;//页数从1开始

         if(Request["pageno"]!=null)

        {

              nowPage=Convert.ToInt32(Request["pageno"]);

        }

         List<Car>list=GetPagedCar(nowPage);

         ---List<Car>list=GetPagedCar(1);显示第一页数据List<Car>list=GetPagedCar(2);显示第二页数据

         //给Repeater数据

         Repeater1.DataSourse=list;

         Repeater1.DataBind();   

        //给上一页、下一页数据---加入超链接HyperLink实现翻页功能

        int pageCount=GetPageCount();

       //控制下一页链接

        if(pageCount==nowPage)

       {

            linkNext.Enabled=false;

       }

        else

       {

           linkNext.Enabled=true;

           linkNext.NavigateUrl="Default.aspx?pageno="+(nowPage+1).ToString(); 

       }

       //控制上一页链接

        if(nowPage==1)

       {

           linkPrev.Enabled=false;

       }

        else

        {

            linkPrev.Enabled=true;

            linkPrev.NavigateUrl="Default.aspx?pageno="+(nowPage-1).ToString();---注意:pageno等号前后不能加空格

        }

           //控制首页链接

           linkFirst.NavigateUrl="Default.aspx?pageno=1"

           //控制尾页链接

           linkLast.NavigateUrl="Default.aspx?pageno="+pageCount;

    }

          //跳转到某一页

    protected btnGo_Click(object sender,EventArgs e)

    {

           int goNo=Convert.ToInt32(txtPageNo.Text);

           if(goNo<1)

           {

                  Response.Redirect("Default.aspx")

           }

            else if(goNo<GetPageCount())

            {

                   Response.Redirect("Default.aspx?pageno="+GetPageCount());

            }

            else

            {

                   Response.Redirect("Default.aspx?pageno="+goNo);

            }

    }

    【法二】2015.8.18

     part1---不加标注

    aspx代码:

      <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate><ul></HeaderTemplate>
                <FooterTemplate></ul></FooterTemplate>
                <ItemTemplate>
                    <li><%# Eval("Name") %></li>
                </ItemTemplate>
            </asp:Repeater>
        </div>
            <a href="Default.aspx" runat="server" id="lnkPrev">
                <input id="Button1" type="button" value="上一页" /></a>
            <a href="Default.aspx" runat="server" id="lnkNext">
                <input id="Button2" type="button" value="下一页" /></a>
    </form>
    </body>

    VS代码:

    public partial class _Default : System.Web.UI.Page
    {
        private MyDBDataContext _Context = new MyDBDataContext();
        private const int PAGESIZE = 3;
        private int _PageNo = 1;  //当前的页号
        //获取总页数
        public int GetPageCount()
        {
            //取总行数
            int rowsCount = _Context.Car.Count();
            //算出总页数
            int pageCount = (int)Math.Ceiling( 1.0*rowsCount / PAGESIZE);

            return pageCount;
        }
        public List<Car> GetPagedCar()
        {
            var query = _Context.Car.Skip(PAGESIZE*(_PageNo-1)).Take(PAGESIZE);
            return query.ToList();
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request["pn"] != null)
                {
                    _PageNo = Convert.ToInt32(Request["pn"]);
                }
                Repeater1.DataSource = GetPagedCar();
                Repeater1.DataBind();

                if (_PageNo == 1)
                {
                    lnkPrev.HRef = "Default.aspx?pn=1";
                }
                else
                {
                    lnkPrev.HRef = "Default.aspx?pn=" + (_PageNo - 1).ToString();
                }
                if (_PageNo == GetPageCount())
                {
                    lnkNext.HRef = "Default.aspx?pn=" + GetPageCount().ToString();
                }
                else
                {
                    lnkNext.HRef = "Default.aspx?pn=" + (_PageNo + 1).ToString();
                }

            }
        }
    }

    part2---加标注

    aspx代码:

    <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
         <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate><ul></HeaderTemplate>
                <FooterTemplate></ul></FooterTemplate>
                <ItemTemplate>
                    <li><%# Eval("Name") %></li>
                </ItemTemplate>
            </asp:Repeater>
        </div>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上一页" />
            <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="下一页" />
            <asp:DropDownList ID="PageList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="PageList_SelectedIndexChanged">
            </asp:DropDownList>
        &nbsp;一共<asp:Label ID="lblAll" runat="server" Font-Bold="True" ForeColor="Red"></asp:Label>
            页,当前是第<asp:Label ID="lblNow" runat="server" Font-Bold="True" ForeColor="Red"></asp:Label>
            页</form>
    </body>

    VS代码:

    public partial class Default2 : System.Web.UI.Page
    {
        private MyDBDataContext _Context = new MyDBDataContext();
        private const int PAGESIZE = 3;
        private int _PageNo = 1;  //当前的页号
        //获取总页数
        public int GetPageCount()
        {
            //取总行数
            int rowsCount = _Context.Car.Count();
            //算出总页数
            int pageCount = (int)Math.Ceiling(1.0 * rowsCount / PAGESIZE);

            return pageCount;
        }
        public List<Car> GetPagedCar()
        {
            _PageNo = Convert.ToInt32( PageList.SelectedValue);
            var query = _Context.Car.Skip(PAGESIZE * (_PageNo - 1)).Take(PAGESIZE);
            return query.ToList();
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                FillPageList();
                ShowCars();
            }
        }

        private void ShowCars()
        {
            Repeater1.DataSource = GetPagedCar();
            Repeater1.DataBind();

            //给当前页和一共几页赋值
            lblNow.Text = PageList.SelectedValue;
            lblAll.Text = PageList.Items.Count.ToString();
        }

        private void FillPageList()
        {
            PageList.Items.Clear();

            int pageCount = GetPageCount();
            for (int i = 1; i <= pageCount; i++)
            {
                ListItem li = new ListItem(i.ToString(), i.ToString());
                PageList.Items.Add(li);
            }
        }
        protected void PageList_SelectedIndexChanged(object sender, EventArgs e)
        {
            ShowCars();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (PageList.SelectedIndex == 0)
            {
                return;
            }
            PageList.SelectedIndex--;
            ShowCars();
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            if (PageList.SelectedIndex == GetPageCount() - 1)
            {
                return;
            }

            PageList.SelectedIndex++;
            ShowCars();
        }
    }

    2015.9.9

    汽车表信息分页

    【Home控制器代码】---添加引用using MvcApplication1.Models;

    namespace MvcApplication1.Controllers
    {
        public class HomeController : Controller
        {
            private const int PAGESIZE = 5;

            public ActionResult Index(int? id)
            {
                if (id == null)
                {
                    id = 1;
                }
                List<Car> list = new CarBF().Select(PAGESIZE,id.Value);//获取当前页数据(id代表当前页页号)
                int pageCount = new CarBF().GetPageCount(PAGESIZE);//获取总页数
                int nextPageNo = id.Value>pageCount?pageCount:id.Value + 1;//计算下一页页号
                int prevPageNo = id.Value==1?1:id.Value - 1;//计算上一页页号
                //使用ViewBag带到视图层去
                ViewBag.NextPageNo = nextPageNo;
                ViewBag.PrevPageNo = prevPageNo;
                ViewBag.PageCount = pageCount;//总页数
                ViewBag.PageNo = id;//当前页号
                //下拉列表分页---下拉列表按钮代码
                List<int> listPage = new List<int>();
                for (int i = 1; i <= pageCount; i++)
                {
                    listPage.Add(i);
                }
                SelectList pageList = new SelectList(listPage,id);
                ViewBag.PageList = pageList;
                return View(list);
            }
        }
    }

    【CarBF代码】

    namespace MvcApplication1.Models
    {
        public class CarBF
        {
            private MyDBDataContext_Context=new MyDBDataContext();
            //获取总页数
            public int GetPageCount(int pageSize)
            {
                int rowsCount = _Context.Car.Count();
                int pageCount = (int)Math.Ceiling(1.0*(rowsCount/pageSize));
                return pageCount;
            }
            //获取指定页数据
            public List<Car> Select(int pageSize,int pageNo)
            {
                var query=_Context.Car.Skip(pageSize*(pageNo-1)).Take(pageSize);
                return query.ToList();
            }
        }
    }

    【Index视图源】

    @using MvcApplication1.Models;
    @model List<Car>
    @{
        Layout = null;
    }

    <!DOCTYPE html>

    <html>
    <head>
        <meta name="viewport" content="width=device-width">
        <title>Index</title>
    </head>
    <body>
        <h1>分页</h1>
        <table border="0" width="100%" cellpadding="5" cellspacing="1" bgcolor="navy">
            <tr style="color:white;text-align:center;font-weight:bold">
               <td>代号</td>
               <td>车型</td>
               <td>系列</td>
               <td>厂商</td>
               <td>价格</td>
            </tr>
            @{
            foreach(Car data in Model)
            {
            <tr bgcolor="white">
                <td>@data.Code</td>
                <td>@data.Name</td>
                <td>@data.Brand1.Brand_Name</td>
                <td>@data.Brand1.Productor.Prod_Name</td>
                <td>@data.Price</td>
            </tr>
            }
            }
        </table>
        @{
            int nowPageNo = (int)ViewBag.PageNo;
            int nextPageNo = (int)ViewBag.PageNo + 1;
            if(nowPageNo==new CarBF().GetPageCount(5))
            {
                nextPageNo = nowPageNo;
            }
            int prevPageNo = (int)ViewBag.PageNo - 1;
            if(nowPageNo==1)
            {
                prevPageNo = 1;
            }
         }
        @Html.ActionLink("首页","Index","Home","new{id=1}")
        @Html.ActionLink("下一页","Index","Home","{id=(int)ViewBag.NextPageNo}",null)
        @Html.ActionLink("上一页","Index","Home","{id=(int)ViewBag.PrevPageNo}",null)
        @Html.ActionLink("尾页","Index","Home","new{id=(int)ViewBag.PageCount")
        &nbsp;&nbsp;
        <div style="display:inline-block">
        @using(Html.BeginForm("Index","Home"))
        {
        @:转第@Html.TextBox("id",null,new{size=2})页<input type="submit" value="GO"/>---加GO转页按钮
        }
        </div>    一共@ViewBag.PageCount页,当前是第@ViewBag.PageNo页---常见页数显示
    </body>

    【转页部分还可写成】

    <div style="display:inline-block">
    @using(Html.BeginForm("Index","Home"))
    {
        @:转第@Html.DropDownList("id",(SelectList)ViewBag.PageList)页<input type="submit" value="GO"/>---加GO转页按钮
    }
    </div>  

    或者

    <div style="display:inline-block">
    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new {id="form2"}))
    {
        @:转第@Html.DropDownList("id",(SelectList)ViewBag.PageList,new{onchange="form2.submit()"})页<input type="submit" value="GO"/>---加GO转页按钮
    }
    </div>  

    或者

    <div style="display:inline-block">
    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new {id="form2"}))
    {
        @:转第@Html.DropDownList("id",(SelectList)ViewBag.PageList,new{})页<span onclick="form2.submit()"></span>
    }
    </div>  

  • 相关阅读:
    ubuntu 启动 卡死在 clean ... file ... blocks
    realsense opencv example 运行时无显示退出
    realsense example 最简单编译
    python内置方法
    接口自动化测试框架
    git使用问题
    自动化测试工具原理
    四层协议网络传输
    字符串反转
    排除链接数性能瓶颈
  • 原文地址:https://www.cnblogs.com/kxy3-1314/p/4739057.html
Copyright © 2011-2022 走看看