.Net2.0_DataList实现分页

.Net2.0中 ,  VS2005自带的Repeater和DataList控件提供了一个快速、灵活的表现数据的方式,但是,它们没有内建的分页功能;DataGrid控件提供了内建的分页功能,但它的结构比较复杂。下面就用PagedDataSource类实现Repeater和DataList的分页。 PagedDataSource封装了DataGrid的分页属性,我们可以象DataGrid那样进行分页。

演示地址

DataGridPaging.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataGridPaging.aspx.cs" Inherits="eMeng.Exam.DataGridPaging.DataGridPaging" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</head>
<body ms_positioning="GridLayout">
    <form id="Form1" runat="server">
        <asp:DataGrid ID="MyDataGrid" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center"
            AlternatingItemStyle-BackColor="#eeeeee" HeaderStyle-BackColor="#aaaadd" Font-Size="8pt"
            Font-Name="Verdana" CellSpacing="0" CellPadding="3" GridLines="Both" BorderWidth="1"
            BorderColor="black" OnPageIndexChanged="MyDataGrid_Page" PagerStyle-HorizontalAlign="Right"
            PagerStyle-Mode="NumericPages" PageSize="3" AllowPaging="True">
            <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
            <HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"></HeaderStyle>
            <PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
            <Columns>
                <asp:BoundColumn HeaderText="标题" DataField="M_Name" HeaderStyle-Width="480px"></asp:BoundColumn>
                <asp:BoundColumn HeaderText="推荐" DataField="M_Recomm" DataFormatString="{0:yyyy-MM-dd hh:mm:ss}">
                </asp:BoundColumn>
            </Columns>
        </asp:DataGrid>
        <p style="font-size: 9pt" align="center">
            <asp:Label ID="lblPageCount" runat="server"></asp:Label>&nbsp;
            <asp:Label ID="lblCurrentIndex" runat="server"></asp:Label>
            <asp:LinkButton ID="btnFirst" OnClick="PagerButtonClick" runat="server" Font-Name="verdana"
                Font-Size="8pt" ForeColor="navy" CommandArgument="0"></asp:LinkButton>&nbsp;
            <asp:LinkButton ID="btnPrev" OnClick="PagerButtonClick" runat="server" Font-Name="verdana"
                Font-Size="8pt" ForeColor="navy" CommandArgument="prev"></asp:LinkButton>&nbsp;
            <asp:LinkButton ID="btnNext" OnClick="PagerButtonClick" runat="server" Font-Name="verdana"
                Font-Size="8pt" ForeColor="navy" CommandArgument="next"></asp:LinkButton>&nbsp;
            <asp:LinkButton ID="btnLast" OnClick="PagerButtonClick" runat="server" Font-Name="verdana"
                Font-Size="8pt" ForeColor="navy" CommandArgument="last"></asp:LinkButton>
        </p>
    </form>
</body>
</html>

DataGridPaging.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Configuration;
using System.Data.SqlClient;

namespace eMeng.Exam.DataGridPaging
{
    /// <summary>
    /// DataGridPaging 的摘要说明。
    /// </summary>
    public partial class DataGridPaging : System.Web.UI.Page
    {
        //protected System.Web.UI.WebControls.DataGrid MyDataGrid;
        //protected System.Web.UI.WebControls.Label lblPageCount;
        //protected System.Web.UI.WebControls.Label lblCurrentIndex;
        //protected System.Web.UI.WebControls.LinkButton btnFirst;
        //protected System.Web.UI.WebControls.LinkButton btnPrev;
        //protected System.Web.UI.WebControls.LinkButton btnNext;
        //protected System.Web.UI.WebControls.LinkButton btnLast;
        private SqlConnection cn = new SqlConnection();

        private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
            btnFirst.Text = "最首页";
            btnPrev.Text = "前一页";
            btnNext.Text = "下一页";
            btnLast.Text = "最后页";
            OpenDatabase();
            BindGrid();
        }
        private void OpenDatabase()
        {
            cn = new SqlConnection(ConfigurationManager.ConnectionStrings["3gdyConn"].ConnectionString); //这里请自己修改Web.config文件的数据库连接字符串
            cn.Open();
        }
        private void ShowStats()
        {
            lblCurrentIndex.Text = "第 " + (MyDataGrid.CurrentPageIndex + 1).ToString() + " 页";
            lblPageCount.Text = "总共 " + MyDataGrid.PageCount.ToString() + " 页";
        }

        public void PagerButtonClick(object sender, EventArgs e)
        {
            string arg = ((LinkButton)sender).CommandArgument.ToString();
            switch (arg)
            {
                case "next":
                    if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
                    {
                        MyDataGrid.CurrentPageIndex += 1;
                    }
                    break;
                case "prev":
                    if (MyDataGrid.CurrentPageIndex > 0)
                    {
                        MyDataGrid.CurrentPageIndex -= 1;
                    }
                    break;
                case "last":
                    MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
                    break;
                default:
                    MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
                    break;
            }
            BindGrid();
            ShowStats();
        }
        public void BindGrid()
        {
            SqlConnection myConnection = cn;
            DataSet ds = new DataSet();
            SqlDataAdapter adapter = new SqlDataAdapter("Select M_Name,M_Recomm from [Movie]", myConnection);
            //adapter.SelectCommand = new System.Data.SqlClient.SqlCommand("Select * From [Movie]", myConnection);
            adapter.Fill(ds, "Document");
            MyDataGrid.DataSource = ds.Tables["Document"].DefaultView;
            MyDataGrid.DataBind();
            ShowStats();
        }
        public void MyDataGrid_Page(object sender, DataGridPageChangedEventArgs e)
        {
            int startIndex;
            startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
            MyDataGrid.CurrentPageIndex = e.NewPageIndex;
            BindGrid();
            ShowStats();
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }

        /// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值