• 为DataGrid自定义分页添加自定义导航和分页信息 (转)


    按此在新窗口打开图片

    访问Northwind库,为了独立开来这里还是把存储过程列了一下,

    CREATE PROCEDURE [GetCustomersDataPage] 

             @PageIndex INT,

             @PageSize  INT,

             @RecordCount INT OUT,

             @PageCount INT OUT

    AS

    SELECT @RecordCount = COUNT(*)  FROM   Customers

    SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize) 

    DECLARE @SQLSTR NVARCHAR(1000)

    IF @PageIndex = 0 OR @PageCount <= 1

             SET @SQLSTR =N'SELECT TOP '+STR( @PageSize )+

    '  CustomerID, CompanyName,Address,Phone  FROM   Customers ORDER BY CustomerID DESC

    ELSE IF     @PageIndex = @PageCount - 1             

             SET @SQLSTR =N' SELECT * FROM ( SELECT TOP '+STR( @RecordCount - @PageSize * @PageIndex )+

    '  CustomerID, CompanyName,Address,Phone  FROM   Customers ORDER BY CustomerID ASC ) TempTable  ORDER BY CustomerID DESC'

    ELSE          

            SET @SQLSTR =N' SELECT TOP  '+STR( @PageSize )+' * FROM ( SELECT TOP '+STR( @RecordCount - @PageSize * @PageIndex )+

    '  CustomerID, CompanyName,Address,Phone  FROM   Customers ORDER BY CustomerID ASC ) TempTable ORDER BY CustomerID DESC'

     

    EXEC (@SQLSTR)

    GO

     

    下面就就把代码贴了一下,

    Aspx文件代码如下:

    <%@ Page language="c#" Codebehind="DataGridCustomPaging.aspx.cs" AutoEventWireup="false" Inherits="ZZ.AspnetPaging.DataGridCustomPaging" %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

    <HTML>

             <HEAD>

                       <title>DataGridPaging</title>

                       <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

                       <meta content="C#" name="CODE_LANGUAGE">

                       <meta content="JavaScript" name="vs_defaultClientScript">

                       <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

             </HEAD>

             <body>

                       <form id="Form1" method="post" runat="server">

                                <TABLE id="Table1" style="FONT-SIZE: 9pt" cellSpacing="1" cellPadding="1" width="450" align="center"

                                         border="1">

                                         <TR>

                                                   <TD><asp:datagrid id="DataGrid1" runat="server" AllowPaging="True" AllowCustomPaging="True" Width="100%">

                                                                     <FooterStyle Font-Size="9pt"></FooterStyle>

                                                                     <HeaderStyle Font-Size="9pt"></HeaderStyle>

                                                                     <PagerStyle Visible="False" Font-Size="9pt" Mode="NumericPages"></PagerStyle>

                                                            </asp:datagrid></TD>

                                         </TR>

                                         <TR>

                                                   <TD>

                                                            <TABLE id="Table2" style="FONT-SIZE: 9pt" cellSpacing="1" cellPadding="1" width="100%"

                                                                     align="center" border="1">

                                                                     <TR>

                                                                               <TD style="WIDTH: 150px"><asp:linkbutton id="LBtnFirst" runat="server" CommandName="First">首页</asp:linkbutton>&nbsp;

                                                                                        <asp:linkbutton id="LBtnPrev" runat="server" CommandName="Prev">上一页</asp:linkbutton>&nbsp;

                                                                                        <asp:linkbutton id="LBtnNext" runat="server" CommandName="Next">下一页</asp:linkbutton>&nbsp;

                                                                                        <asp:linkbutton id="LBtnLast" runat="server" CommandName="Last">尾页</asp:linkbutton></TD>

                                                                               <TD>第<asp:literal id="LtlPageIndex" runat="server"></asp:literal>页&nbsp; 共<asp:literal id="LtlPageCount" runat="server"></asp:literal>页&nbsp; 

                                                                                        每页<asp:Literal id="LtlPageSize" runat="server"></asp:Literal>条&nbsp; 共<asp:Literal id="LtlRecordCount" runat="server"></asp:Literal>条&nbsp;

                                                                               </TD>

                                                                     </TR>

                                                            </TABLE>

                                                   </TD>

                                         </TR>

                                </TABLE>

                       </form>

             </body>

    </HTML>

     

    Aspx.cs文件代码如下:

    using System;

    using System.Collections;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Web;

    using System.Web.SessionState;

    using System.Web.UI;

    using System.Web.UI.WebControls;

    using System.Web.UI.HtmlControls;

    using System.Data.SqlClient;

    using System.Configuration;

     

    namespace ZZ.AspnetPaging

    {

         public class DataGridCustomPaging : System.Web.UI.Page 

         {

             private int pageCount;

             private int recordCount;

     

             protected System.Web.UI.WebControls.LinkButton LBtnFirst;

             protected System.Web.UI.WebControls.LinkButton LBtnPrev;

             protected System.Web.UI.WebControls.LinkButton LBtnNext;

             protected System.Web.UI.WebControls.LinkButton LBtnLast;

             protected System.Web.UI.WebControls.Literal LtlPageIndex;

             protected System.Web.UI.WebControls.Literal LtlPageCount;

             protected System.Web.UI.WebControls.Literal LtlPageSize;

             protected System.Web.UI.WebControls.Literal LtlRecordCount;

             protected System.Web.UI.WebControls.DataGrid DataGrid1;

         

             private void Page_Load(object sender, System.EventArgs e)

             {

                  if(!Page.IsPostBack)

                  {

                       DataGridDataBind();

                  }

             }

     

             //绑定数据

             private void DataGridDataBind()

             {

                  DataSet ds = GetCustomersData(PageIndex,PageSize,ref recordCount,ref pageCount);

                  this.DataGrid1.VirtualItemCount = RecordCount;

                  this.DataGrid1.DataSource = ds;

                  this.DataGrid1.DataBind();

                  SetPagingState();

             }

     

             #region Web 窗体设计器生成的代码

             override protected void OnInit(EventArgs e)

             {

                  InitializeComponent();

                  base.OnInit(e);

             }

             

             private void InitializeComponent()

             {    

                  this.LBtnFirst.Click += new System.EventHandler(this.LBtnNavigation_Click);

                  this.LBtnPrev.Click += new System.EventHandler(this.LBtnNavigation_Click);

                  this.LBtnNext.Click += new System.EventHandler(this.LBtnNavigation_Click);

                  this.LBtnLast.Click += new System.EventHandler(this.LBtnNavigation_Click);

                  this.Load += new System.EventHandler(this.Page_Load);

             }

             #endregion

     

             private static DataSet GetCustomersData(int pageIndex,int pageSize,ref int recordCount,ref int pageCount)

             {

                  string connString = ConfigurationSettings.AppSettings["ConnString"];

                  SqlConnection conn = new SqlConnection(connString);

                  SqlCommand comm = new SqlCommand("GetCustomersDataPage",conn);

                  comm.Parameters.Add(new SqlParameter("@PageIndex",SqlDbType.Int));

                  comm.Parameters[0].Value = pageIndex;

                  comm.Parameters.Add(new SqlParameter("@PageSize",SqlDbType.Int));

                  comm.Parameters[1].Value = pageSize;

                  comm.Parameters.Add(new SqlParameter("@RecordCount",SqlDbType.Int));

                  comm.Parameters[2].Direction = ParameterDirection.Output;

                  comm.Parameters.Add(new SqlParameter("@PageCount",SqlDbType.Int));

                  comm.Parameters[3].Direction = ParameterDirection.Output;

                  comm.CommandType = CommandType.StoredProcedure;

                  SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);

                  DataSet ds = new DataSet();

                  dataAdapter.Fill(ds);

                  recordCount = (int)comm.Parameters[2].Value;

                  pageCount = (int)comm.Parameters[3].Value;

                  return ds;

             }

     

             private void LBtnNavigation_Click(object sender, System.EventArgs e)

             {

                  LinkButton btn = (LinkButton)sender;

                  switch(btn.CommandName)

                  {

                       case "First":

                           PageIndex = 0;

                           break;

                       case "Prev"://if( PageIndex > 0 )

                                PageIndex = PageIndex - 1;

                           break;

                       case "Next"://if( PageIndex < PageCount -1)

                                PageIndex = PageIndex + 1;

                           break;

                       case "Last":

                           PageIndex = PageCount - 1;

                           break;

                  }

                  DataGridDataBind();              

             }

     

             /// <summary>

             /// 控制导航按钮或数字的状态

             /// </summary>

             public void SetPagingState()

             {

                  if( PageCount <= 1 )//( RecordCount <= PageSize )//小于等于一页

                  {

                       this.LBtnFirst.Enabled = false;

                       this.LBtnPrev.Enabled = false;

                       this.LBtnNext.Enabled = false;

                       this.LBtnLast.Enabled = false;

                  }

                  else //有多页

                  {

                       if( PageIndex == 0 )//当前为第一页

                       {

                           this.LBtnFirst.Enabled = false;

                           this.LBtnPrev.Enabled = false;

                           this.LBtnNext.Enabled = true;

                           this.LBtnLast.Enabled = true;                                    

                       }

                       else if( PageIndex == PageCount - 1 )//当前为最后页 

                       {

                           this.LBtnFirst.Enabled = true;

                           this.LBtnPrev.Enabled = true;

                           this.LBtnNext.Enabled = false;

                           this.LBtnLast.Enabled = false;                                   

                       }

                       else //中间页

                       {

                           this.LBtnFirst.Enabled = true;

                           this.LBtnPrev.Enabled = true;

                           this.LBtnNext.Enabled = true;

                           this.LBtnLast.Enabled = true;

                       }

                  }

             

                  this.LtlPageSize.Text = PageSize.ToString();

                  this.LtlRecordCount.Text = RecordCount.ToString();

                  if(RecordCount == 0)

                  {

                       this.LtlPageCount.Text = "0";

                       this.LtlPageIndex.Text = "0";

                  }    

                  else

                  {

                       this.LtlPageCount.Text = PageCount.ToString();

                       this.LtlPageIndex.Text = (PageIndex + 1).ToString();

                  }

             }

     

             

             public int PageCount

             {

                  get

                  {

                       return this.DataGrid1.PageCount;

                  }    

             }

     

             public int PageSize

             {

                  get

                  {

                       return this.DataGrid1.PageSize;

                  }             

             }

     

             public int PageIndex

             {

                  get

                  {

                       return this.DataGrid1.CurrentPageIndex;

                  }

                  set

                  {

                       this.DataGrid1.CurrentPageIndex = value;

                  }

             }

     

             public int RecordCount

             {

                  get

                  {

                       return recordCount;

                  }             

             }

         }

    }
  • 相关阅读:
    hdu 1231 最大连续子序列
    数据加载初始化问题
    分页查询
    PHP-引入文件(include)后,页面错位,不居中解决办法
    数据库中的事务和锁(乐观、悲观锁,共享、排他锁,死锁)
    java操作excel 工具类
    微信公众号处理
    java实用资料
    【转】字符流和字节流的区别,使用场景,相关类
    基于redis分布式锁实现“秒杀”
  • 原文地址:https://www.cnblogs.com/dagon007/p/116051.html
Copyright © 2020-2023  润新知