C#方法 Repeater、webdiyer:AspNetPager分页、存储过程分页

此方法是基于三次架构、实体创建,可基于此修改

前台HTML:

<style>
    .tableList tr td
    {
        height: 25px;
    }
    .trtitle
    {
        background-color: #990000;
        height: 25px;
        color: White;
    }
    .pageF
    {
        float: right;
        padding: 5px 0;
        margin-right: 50px;
    }
    .pageF a
    {
        text-decoration: none;
        color: blue;
    }
    .pageF a:hover
    {
        text-decoration: underline;
        cursor: pointer;
        color: blue;
    }
</style>
<table class="tableList" cellspacing="1" style="margin-top: 10px; width: 100%; text-align: center;"
    border="1px">
    <asp:repeater id="rptCampaignList" runat="server"> <HeaderTemplate> <thead> <tr class="trtitle" style=""> <th> ID </th> <th> 名称 </th> <th> 指向网址 </th> <th> 创建时间 </th> <th> 操作 </th> </tr> </thead> </HeaderTemplate> <ItemTemplate> <tbody> <tr> <td class="alone"> <%# Eval("PartnersID")%> </td> <td class="alone"> <%# Eval("PartnersName")%> </td> <td> <%# Eval("PartnersUrl")%> </td> <td> <%# Eval("PCreateDate", "{0:yyyy-MM-dd HH:ss}").ToString()%> </td> <td> <asp:LinkButton ID="lnkBtnDelUser" CommandArgument='<%# Eval("PartnersID")%>' CommandName="del" OnCommand="lnkBtnOp_Command" runat="server" OnClientClick="if(!confirm('你想要删除这条记录吗?')) return false;">删除</asp:LinkButton> </td> </tr> </tbody> </ItemTemplate> </asp:repeater>
    <tfoot>
        <tr>
            <td colspan="10">
                <div class="pageF">
                    <webdiyer:AspNetPager ID="pagerBarList" CssClass="paginator" CurrentPageButtonClass="cpb"
                        OnPageChanged="pagerBarList_PageChanged" runat="server" PageSize="20" FirstPageText="首页"
                        LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" AlwaysShow="true" NumericButtonCount="5"
                        CurrentPageButtonPosition="Center" CustomInfoHTML="<font style='color:#0000CC;'>共%PageCount%页%RecordCount%条记录</font> "
                        ShowCustomInfoSection="Left" CustomInfoSectionWidth="120px">
                    </webdiyer:AspNetPager>
                </div>
            </td>
        </tr>
    </tfoot>
</table>


后台代码:

Model类

public class Partners
    {
       //PartnersID, PartnersName, PartnersUrl, PCreateDate
        private int partnersID;

        public int PartnersID
        {
            get { return partnersID; }
            set { partnersID = value; }
        }
        private string partnersName;

        public string PartnersName
        {
            get { return partnersName; }
            set { partnersName = value; }
        }
        private string partnersUrl;

        public string PartnersUrl
        {
            get { return partnersUrl; }
            set { partnersUrl = value; }
        }
        private DateTime? pCreateDate;

        public DateTime? PCreateDate
        {
            get { return pCreateDate; }
            set { pCreateDate = value; }
        }

类:DAL


public List<Partners> GetEDM_CountryPropertyList( int pageSize, int pageIndex, ref int recordCount)
        {
            List<Partners> entities = new List<Partners>();

            SqlParameter[] pars = { 
                                      
                new SqlParameter("@PageSize", pageSize),
                new SqlParameter("@PageIndex", pageIndex),
                SqlHelper.MakeParam("@RecordCount",SqlDbType.Int,4,ParameterDirection.Output,null)
                                  };
            SqlDataReader reader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "dbo.PartnertsList", pars);
            try
            {
                while (reader.Read())
                {
                    Partners cp = new Partners()
                    {
                        //PartnersID, PartnersName, PartnersUrl, PCreateDate
                        PartnersID = Field.GetInt(reader, "PartnersID"),
                        PartnersName = Field.GetString(reader, "PartnersName"),
                        PartnersUrl = Field.GetString(reader, "PartnersUrl"),
                        PCreateDate = Field.GetDateTime(reader, "PCreateDate"),
                    };
                    entities.Add(cp);
                }
            }
            catch (Exception ex)
            {
                recordCount = -1;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
            }

            recordCount = Convert.ToInt32(pars[2].Value);
            return entities;
        }

类:BLL

public class PartnersBLL
    {
       private readonly DLL.PartnersData country = new DLL.PartnersData();
        /// <summary>
        /// 国家房产信息 列表 分页
        /// </summary>
        /// <param name="ECP_countryId"></param>
        /// <param name="PropertyState"></param>
        /// <param name="pageSize"></param>
        /// <param name="pageIndex"></param>
        /// <param name="recordCount"></param>
        /// <returns></returns>
       public List<Partners> GetEDM_CountryPropertyList( int pageSize, int pageIndex, ref int recordCount)
        {
            return country.GetEDM_CountryPropertyList( pageSize, pageIndex, ref recordCount);
        }

        /// <summary>
        ///  分页  移民局
        /// </summary>
        /// <param name="?"></param>
        /// <param name="pageSize"></param>
        /// <param name="pageIndex"></param>
        /// <param name="recordCount"></param>
        /// <returns></returns>
       public List<Immigration> GetEDM_ImmigrationList(int pageSize, int pageIndex, ref int recordCount)
       {
           return country.GetEDM_ImmigrationList(pageSize, pageIndex, ref recordCount);
       }
    }

后台代码:

protected void Page_Load(object sender, EventArgs e)
        {
            
            if (!IsPostBack)
            {
                PageBind();
                PageBingUser();
                PageBingMess();
                PageBindImmigration();
            }
        }
        protected void PageBind()
        {

            int recordCount = 0;
            List<Partners> list = new List<Partners>();
            BLL.PartnersBLL country = new BLL.PartnersBLL();
            //this.pagerBarList.PageSize, this.pagerBarList.CurrentPageIndex, ref recordCount
            list = country.GetEDM_CountryPropertyList( this.pagerBarList.PageSize, this.pagerBarList.CurrentPageIndex, ref recordCount);

            rptCampaignList.DataSource = list;
            rptCampaignList.DataBind();
            //判断有多少条数据的
            this.pagerBarList.RecordCount = recordCount;
        }
        protected void pagerBarList_PageChanged(object sender, EventArgs e)
        {
           
            this.PageBind();
        }
        /// <summary>
        /// 删除或修改
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lnkBtnOp_Command(object sender, CommandEventArgs e)
        {
            string infoID = e.CommandArgument.ToString();
            //Dictionary<string, object> dic = new Dictionary<string, object>();
            //dic.Add("EMID", infoID);
            if (e.CommandName.Equals("del"))
            {
                Dictionary<string, object> dic = new Dictionary<string, object>();
                dic.Add("PartnersID", infoID);
                if (BLL.BLL.Delete(dic, "Partners"))
                {
                    Response.Write("<script>alert('操作成功!');window.location.href='PartnersList.aspx';</script>");
                }
                else
                {
                    Response.Write("<script>alert('操作失败!');window.location.href='PartnersList.aspx';</script>");
                }
            }
        }

需配置:Web.config文件

<system.web>
    <pages controlRenderingCompatibilityVersion="3.5" validateRequest="false" clientIDMode="AutoID" enableEventValidation="false" >
      <controls>
        <add tagPrefix="webdiyer" namespace="Wuqi.Webdiyer" assembly="AspNetPager" />
      </controls>
    </pages>
 </system.web>


所用到的存储过程:

USE [Production]
GO
/****** Object:  StoredProcedure [dbo].[PartnertsList]    Script Date: 01/06/2013 17:39:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE  [dbo].[PartnertsList]

	@PageSize INT,
	@PageIndex INT,
	@RecordCount INT OUTPUT
		
AS
BEGIN

   BEGIN TRAN
   DECLARE @Sql NVARCHAR(MAX), @Where NVARCHAR(MAX)
   
   --默认值 @SQL 语句取得总行数 
	SET @Sql = 'SELECT @RecordCount = COUNT(1) FROM dbo.Partners  '
	SET @Where = ''
	
	--查询当前活动下的邮件列表
	
		if(@Where!='') set @Where=@Where+' and '
	
	
    IF(@Where != '') SET @Where = ' WHERE ' + @Where

	--合并 @SQL 查询行数
	SET @Sql = @Sql + @Where
	print @Sql
	EXEC sp_executesql @Sql,
	N'@RecordCount INT OUTPUT',
	@RecordCount = @RecordCount OUTPUT
	
	--合并 @SQL 查询
	SET @Sql = 'SELECT * FROM (
	SELECT ROW_NUMBER() OVER(ORDER BY PartnersID DESC) AS RowNumber, dbo.Partners.* FROM dbo.Partners ' + @Where + ') as tmp 
	WHERE RowNumber BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize'
     
     
     
     EXEC sp_executesql @Sql,
	N'@PageSize INT,
	@PageIndex INT',
	@PageSize,
	@PageIndex
	
    IF @@ERROR<>0
	BEGIN
		ROLLBACK TRAN
	END
	ELSE
	BEGIN
		COMMIT TRAN
	END
END


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个分页控件名为AspNetPager控件,是Asp.net上使用率最高的分页控件,想怎么分就怎么分.附带'超详细代码注释",好用请给评论. 基本步骤: 1.拖拽控件(存放到到Bin目录下,再拖入工具箱) 2.粘贴复制(已放出实例源码) 3.修改Sql语句,即可使用. 特性如下: 强大的各种属性,附带多种CSS,可自定义CSS,想怎么分就怎么分页! 上下页,1234分页,首尾分页,页面跳转,等等,统统一步搞定. 实例代码(包内也有): ___________________________________________________________________ Default.aspx页面↓↓ ___________________________________________________________________ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!--分页控件命名--> <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %> <!--分页控件命名--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:DataList ID="DataList1" runat="server"> <ItemTemplate> <%# Eval("ID") %> </ItemTemplate> </asp:DataList> <!--分页控件开始--> <webdiyer:AspNetPager ID="Pager1" runat="server" PageSize="8" CssClass="anpager" OnPageChanged="AspNetPager1_PageChanged" FirstPageText="首页 |" LastPageText="| 尾页" NextPageText="下一页" PrevPageText="上一页" ShowPageIndexBox="Always" AlwaysShow="True" Font-Size="13px"> </webdiyer:AspNetPager> <!--分页控件结束--> </div> </form> </body> </html> ____________________________________________________________ Default.aspx.cs页面代码↓↓ ____________________________________________________________ using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; //引用命名空间 using System.Data; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { string connstring = "server=baiyi-js\\SQL2005;uid=sa;pwd=123456;database=xcbaiyi";//修改数据库连接字符串(必须改) protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { SqlConnection conn = null; try { conn = new SqlConnection(connstring); conn.Open(); SqlCommand Count = new SqlCommand(); Count.Connection = conn; Count.CommandText = "select count(*) from tuiguang_2"; //Sql查询语句(必修改) Pager1.RecordCount = (int)Count.ExecuteScalar(); //"Pager1"为分页控件ID.在工具箱拖拽添加控件,同时会在aspx页面顶部添加控件命名控件(无需修改) BindData(); } finally { conn.Close(); } } } //绑定数据-2_只修改Sql语句即可 public void BindData() { SqlConnection conn = new SqlConnection(connstring); string sql = "select * from tuiguang_2";//Sql查询语句(必修改) SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); da.Fill(ds, Pager1.PageSize * (Pager1.CurrentPageIndex - 1), Pager1.PageSize, "temptbl"); DataTable dt = ds.Tables["temptbl"]; DataList1.DataSource = dt; DataList1.DataBind(); } //控件事件-每次重新绑定_不需修改 protected void AspNetPager1_PageChanged(object src, EventArgs e) { BindData(); } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

下一秒_待续

如有帮到您,给个赞赏(^.^)

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

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

打赏作者

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

抵扣说明:

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

余额充值