ASP.NET的Web網頁如何進行分頁操作(Demo舉例)

大概說一下思路,可以利用sql的 Offset/Fetch Next分頁,點擊這裏
這裏的Demo利用LINQ的寫好的方法

//這裏是某個表的列表   skip是跳過前面的多少條數據   take這是跳過前面的數據後顯示多少條數據
db.Albums.ToList().Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();

我們是四個按鈕一個首頁,上一頁,下一頁,尾頁,點擊跳轉
有不明白的,或者小編描述錯誤的模糊的歡迎評論私信

這個頁面的前臺頁面

<%@ Page Title="" Language="C#" MasterPageFile="~/Admin/AdminSite.Master" AutoEventWireup="true" CodeBehind="MusicManager.aspx.cs" Inherits="WebApplication1.Admin.MusicManager1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">

    <link href="../Assets/css/input.css" rel="stylesheet" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

    <div class="pure-form">
        <fieldset>
            <%--genres表--%>
            <legend>後臺管理<i class="fa fa-angle-double-right"></i>音樂管理
                <asp:Button ID="Button1" runat="server" CssClass="button-default pure-button-primary tools-button" Text="添加音樂" OnClick="Button1_Click" />
            </legend>
        </fieldset>
    </div>
    <table class="pure-table">
        <thead>
            <tr>
                <th>#</th>
                <th>音樂名稱</th>
                <th>歌手名稱</th>
                <th>標題</th>
                <th>單價</th>
                <th>圖片</th>
                <th>編輯</th>
            </tr>
        </thead>
        <tbody>
            <asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
                <ItemTemplate>
                    <tr>
                        <td><%# Eval("AlbumId") %></td>
                        <td><%# Eval("Genres.Name") %></td>
                        <td><%# Eval("Artists.Name") %></td>
                        <td><%# Eval("Title") %></td>
                        <td><%# Eval("Price") %></td>
                        <td><%#  Eval("AlbumArtUrl") %><asp:Image ID="Image1" ImageUrl='<%# "~"+Eval("AlbumArtUrl") %>' runat="server" Width="40px" Height="40px" /></td>
                        <td>
                            <asp:LinkButton ID="LinkButton1" CssClass="button-default pure-button-primary" runat="server" CommandArgument='<%#Eval("AlbumId") %>' CommandName="Edit">編輯</asp:LinkButton>
                            <asp:LinkButton ID="LinkButton2" CssClass="button-default  button-error" runat="server" CommandArgument='<%#Eval("AlbumId") %>' CommandName="Delete">刪除</asp:LinkButton></td>

                    </tr>
                </ItemTemplate>
            </asp:Repeater>
            <tr>
                <td colspan="6">
                    <asp:Label ID="Label1" runat="server"></asp:Label>
                    <asp:Button ID="btnFirst" runat="server" Text="首頁" OnClick="btnFirst_Click" />
                    <asp:Button ID="btnPrev" runat="server" Text="上頁" OnClick="btnPrev_Click" />
                    <asp:Button ID="btnNext" runat="server" Text="下頁" OnClick="btnNext_Click" />
                    <asp:Button ID="btnLast" runat="server" Text="尾頁" OnClick="btnLast_Click" />


                </td>
            </tr>
        </tbody>



    </table>
</asp:Content>

這個頁面的後臺頁面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebApplication1.BLL;
using WebApplication1.DAL;

namespace WebApplication1.Admin
{
    public partial class MusicManager1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                LoadData();
        }

        protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            string str = e.CommandName.ToString();
            //這裏獲取id,我的id是剛纔我賦值的時候CommandArgument是賦值的id
            int id = Convert.ToInt32(e.CommandArgument.ToString());
            //using (OLMSDBEntities oLMSDB = new OLMSDBEntities())
            //{


            // var gener = oLMSDB.Genres.FirstOrDefault(t => t.GenreId == id);
            if (str == "Delete")
            {

                //後面是對數據庫的操作,可以忽略
                //    oLMSDB.Genres.Remove(gener);
                bool flag_deleteMussicType = BLL.MusicManager.deleteMusicManager(id);


                if (flag_deleteMussicType)
                {
                    string strUrl = "<script>alert('刪除成功');window.location.href='MusicManager.aspx'</script>";
                    Response.Write(strUrl);
                }
                else
                {
                    string strUrl = "<script>alert('刪除失敗');</script>";
                    Response.Write(strUrl);
                }
            }
            else if (str == "Edit")
            {
                Response.Redirect($"Edit_MusicManager.aspx?id={id}");

            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Redirect("Add_MusicManager.aspx");
        }
      


		//分頁的具體代碼



        //頁碼
        public int pageNumber
        {
            //取值的話,如果裏面沒有就說明第一次進入,然後給它賦值,下面在取值
            get
            {
                if (ViewState["page"] == null)
                {
                    return 1;
                }
                else
                {
                    return Convert.ToInt32(ViewState["page"]);
                }
            }
            set
            {
                ViewState["page"] = value;
            }
        }
        //每頁的記錄數
        public int pageSize
        {
            get
            {
                return 5;
            }
        }
        //總頁數
        public int pageCount
        {
            get
            {
                if (ViewState["count"] == null)
                {
                    return 1;
                }
                else
                {
                    return Convert.ToInt32(ViewState["count"]);
                }
            }
            set
            {
                ViewState["count"] = value;
            }
        }


        public void LoadData()
        {
            using (OLMSDBEntities oLMSDB = new OLMSDBEntities())
            {                          //這裏是某個表的列表      skip是跳過前面的多少條數據         take這是跳過前面的數據後顯示多少條數據
                                       //     //這裏是我需要顯示第三頁的數據,我們要跳過二頁的數據,所以是(3-1)*一頁的數據量
                Repeater1.DataSource = oLMSDB.Albums.ToList().Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
                Repeater1.DataBind();
                pageCount = oLMSDB.Albums.ToList().Count;
                Label1.Text = $"每頁{pageSize}條,共{pageCount}條    ";
                //我們最後剩下一行數據也要在加一頁,如果有餘數就要加一頁
                pageCount = pageCount % pageSize == 0 ? pageCount / pageSize : pageCount / pageSize + 1;
            }
            Label1.Text += "當前頁數爲" + pageNumber + "/" + pageCount;
        }

        //首頁
        protected void btnFirst_Click(object sender, EventArgs e)
        {
            pageNumber = 1;
            LoadData();
        }

        //上一頁
        protected void btnPrev_Click(object sender, EventArgs e)
        {
            //防止到0頁,如果到0頁的話,我們就是到1頁
            pageNumber = pageNumber - 1 < 1 ? pageNumber = 1 : pageNumber - 1;

            LoadData();
        }

        //下一頁
        protected void btnNext_Click(object sender, EventArgs e)
        {
            //防止超出所有的頁面總數,超出的話,就賦值頁面總數
            pageNumber = pageNumber + 1 > pageCount ? pageNumber = pageCount : pageNumber + 1;
            LoadData();
        }

        //尾頁
        protected void btnLast_Click(object sender, EventArgs e)
        {
            pageNumber = pageCount;
            LoadData();
        }
    }
}

效果圖

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章