ASP.NET使用Reperater控件实现数据库动态加载,使用分页展示数据(源码,附项目)

ASP.NET使用Reperater控件实现数据库动态加载,使用分页展示数据(源码)

先展示一下效果
在这里插入图片描述

1、首先编写页面代码,画出表格

我在画表格的时候用了pure框架,大家看个人喜好

<table class="pure-table pure-table-striped pure-table-bordered">
        <thead>
            <tr>
                <th>编号</th>
                <th>音乐名称</th>
                <th>类型名称</th>
                <th>歌手名称</th>
                <th>音乐价格</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            <asp:Repeater ID="rpAlbums" runat="server">
                <ItemTemplate>
                    <tr>
                        <td><%# Eval("AlbumId") %></td>
                        <td><%# Eval("Title") %></td>
                        <td><%# Eval("Genres.Name")%></td>
                        <td><%# Eval("Artists.Name")%></td>
                        <td><%# Eval("Price","{0:C}")%></td>
                        <td>
                            <asp:LinkButton ID="btnUpdate" CommandArgument='<%# Eval("AlbumId") %>' CssClass="pure-button pure-button-primary" runat="server" Text="编辑" OnClick="btnUpdate_Click" />
                            <asp:LinkButton ID="btnDelete" CommandArgument='<%# Eval("AlbumId") %>' CssClass="button-default pure-button" runat="server" Text="删除" OnClientClick="return confirm('您确定要删除嘛?')" OnClick="btnDelete_Click"/>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>
            <tr>
                <td colspan="6">
                    <asp:Label ID="lblpage" runat="server" Text="Label"></asp:Label>
                    <asp:LinkButton ID="btnFirst" runat="server" CssClass="pure-button" OnClick="btnFirst_Click">首页</asp:LinkButton>
                    <asp:LinkButton ID="btnPrev" runat="server" CssClass="pure-button" OnClick="btnPrev_Click">上一页</asp:LinkButton>
                    <asp:LinkButton ID="btnNext" runat="server" CssClass="pure-button" OnClick="btnNext_Click">下一页</asp:LinkButton>
                    <asp:LinkButton ID="btnLast" runat="server" CssClass="pure-button" OnClick="btnLast_Click">尾页</asp:LinkButton>
                </td>
            </tr>
       </tbody>
 </table>
2、页面画好之后,我们编写后台代码

编写load事件,给repeater控件绑定数据

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

        private void loaddata()
        {
            using (OLMSDBEntities db = new OLMSDBEntities())
            {
                var data = db.Albums.Include("Artists").Include("Genres").ToList();
                //分页功能
                rpAlbums.DataSource = data.Skip((PageNmuber - 1) * PageSize).Take(PageSize);
                rpAlbums.DataBind();
                //总页数
                PageCount = Convert.ToInt32(Math.Ceiling(data.Count / (PageSize * 1.0)));

                lblpage.Text = $"每页{PageSize}条/共{data.Count}条,当前{PageNmuber}页/共{PageCount}页";
                //按钮启用条件
                btnFirst.Enabled = !(PageNmuber <= 1);
                btnPrev.Enabled = !(PageNmuber <= 1);
                btnNext.Enabled = !(PageNmuber >= PageCount);
                btnLast.Enabled = !(PageNmuber >= PageCount);
            }
        }

分页的具体代码:

//页码
     public int PageNmuber {
          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;
        }
    }

首页,上一页,下一页,尾页的点击事件

//首页
protected void btnFirst_Click(object sender, EventArgs e)
 {
      PageNmuber = 1;
      loaddata();
  }
//上一页
  protected void btnPrev_Click(object sender, EventArgs e)
  {
      PageNmuber--;
      loaddata();

  }
//下一页
  protected void btnNext_Click(object sender, EventArgs e)
  {
      PageNmuber++;
      loaddata();
  }
//尾页
  protected void btnLast_Click(object sender, EventArgs e)
  {
      PageNmuber = PageCount;
      loaddata();
  }

到此就结束啦,快去练习一下吧!欢迎大佬和小Monkey沟通。
在这里插入图片描述

感谢大佬指正 小Monkey
如果你觉得有用的话,就留个赞吧!蟹蟹

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猴麦麦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值