初学ASP.NET分页控件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
namespace MyComplexControls
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyNavigation runat=server></{0}:MyNavigation>")]
public class MyNavigation : WebControl,INamingContainer
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
创建控件对象#region 创建控件对象
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
LinkButton linkFirst = new LinkButton();
LinkButton linkPrevious = new LinkButton();
LinkButton linkNext = new LinkButton();
LinkButton linkLast = new LinkButton();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ImageButton imgFirst = new ImageButton();
ImageButton imgPrevious = new ImageButton();
ImageButton imgNext = new ImageButton();
ImageButton imgLast = new ImageButton();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DropDownList dropvalue = new DropDownList();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 重写Controls的get属性,保证在访问复合控件的子控件时子控件已经被创建
/// EnsureChildControls()方法检查子控件是否被创建,如果没有被创建,
/// 将自动调用CreateChildControls()方法来创建子控件
/// </summary>
public override ControlCollection Controls
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
EnsureChildControls();
return base.Controls;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 创建子控件
/// </summary>
protected override void CreateChildControls()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
this.Controls.Clear();
dropvalue.Items.Clear();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
linkFirst.Text = NFirstButtonText;
linkPrevious.Text = NPreviousButtonText;
linkNext.Text = NNextButtonText;
linkLast.Text = NLastButtonText;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
linkFirst.Click += new EventHandler(linkFirst_Click);
linkPrevious.Click += new EventHandler(linkPrevious_Click);
linkNext.Click += new EventHandler(linkNext_Click);
linkLast.Click += new EventHandler(linkLast_Click);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
imgFirst.ImageUrl = NFirstButtonImgurl;
imgPrevious.ImageUrl = NPreviousButtonImgUrl;
imgNext.ImageUrl = NNextButtonImgUrl;
imgLast.ImageUrl = NLastButtonImgUrl;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
imgFirst.Click += new ImageClickEventHandler(imgFirst_Click);
imgPrevious.Click += new ImageClickEventHandler(imgPrevious_Click);
imgNext.Click += new ImageClickEventHandler(imgNext_Click);
imgLast.Click += new ImageClickEventHandler(imgLast_Click);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
dropvalue.SelectedIndexChanged += new EventHandler(dropvalue_SelectedIndexChanged);
for (int i = 1; i <= NPageCount; i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
dropvalue.Items.Add(i.ToString());
}
dropvalue.AutoPostBack = true;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Controls.Add(linkFirst);
Controls.Add(linkPrevious);
Controls.Add(linkNext);
Controls.Add(linkLast);
Controls.Add(imgFirst);
Controls.Add(imgPrevious);
Controls.Add(imgNext);
Controls.Add(imgLast);
Controls.Add(dropvalue);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
base.CreateChildControls();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void dropvalue_SelectedIndexChanged(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = int.Parse(dropvalue.SelectedValue);
DataBind();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void imgLast_Click(object sender, ImageClickEventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = NPageCount;
dropvalue.SelectedIndex = NPageCurrent - 1;
DataBind();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void imgNext_Click(object sender, ImageClickEventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (NPageCurrent < NPageCount)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = NPageCurrent + 1;
dropvalue.SelectedIndex = NPageCurrent - 1;
DataBind();
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void imgPrevious_Click(object sender, ImageClickEventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (NPageCurrent > 1)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = NPageCurrent - 1;
dropvalue.SelectedIndex = NPageCurrent - 1;
DataBind();
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void imgFirst_Click(object sender, ImageClickEventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = 1;
dropvalue.SelectedIndex = NPageCurrent - 1;
DataBind();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void linkLast_Click(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = NPageCount;
dropvalue.SelectedIndex = NPageCurrent - 1;
DataBind();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void linkNext_Click(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (NPageCurrent < NPageCount)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = NPageCurrent + 1;
dropvalue.SelectedIndex = NPageCurrent - 1;
DataBind();
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void linkPrevious_Click(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (NPageCurrent > 1)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = NPageCurrent - 1;
dropvalue.SelectedIndex = NPageCurrent - 1;
DataBind();
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void linkFirst_Click(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
NPageCurrent = 1;
dropvalue.SelectedIndex = NPageCurrent - 1;
DataBind();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
自定义属性#region 自定义属性
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("要分页显示的表名")]
public string NTableName
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["table"] == null ? "" : ViewState["table"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["table"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("当前要显示的页码")]
public int NPageCurrent
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["current"] == null ? 1 : int.Parse(ViewState["current"].ToString());
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["current"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("每页的大小(记录数)")]
public int NPageSize
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["size"] == null ? 10 : int.Parse(ViewState["size"].ToString());
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["size"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段")]
public string NFieldShow
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["show"] == null ? "" : ViewState["show"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["show"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC,用于指定排序顺序")]
public string NFieldOrder
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["order"] == null ? "" : ViewState["order"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["order"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("查询条件")]
public string NWhere
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["where"] == null ? "" : ViewState["where"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["where"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("总页数")]
public int NPageCount
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["count"] == null ? 10 : int.Parse(ViewState["count"].ToString());
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("要分页的控件ID")]
public string NControlID
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["id"] == null ? "DataList1" : ViewState["id"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["id"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("要分页的控件类型")]
public ControlType NControlType
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["type"] == null ? ControlType.DataList : (ControlType)ViewState["type"];
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["type"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("用于导航的按钮的类型")]
public ButtonType NButtonType
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["btntype"] == null ? ButtonType.LinkButton : (ButtonType)ViewState["btntype"];
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["btntype"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("首页按钮的文本")]
public string NFirstButtonText
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["firsttxt"] == null ? "首页" : ViewState["firsttxt"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["firsttxt"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("上一页按钮的文本")]
public string NPreviousButtonText
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["pretxt"] == null ? "上一页" : ViewState["pretxt"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["pretxt"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("下一页按钮的文本")]
public string NNextButtonText
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["nexttxt"] == null ? "下一页" : ViewState["nexttxt"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["nexttxt"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("尾页按钮的文本")]
public string NLastButtonText
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["lasttxt"] == null ? "尾页" : ViewState["lasttxt"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["lasttxt"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("首页按钮的图片路径")]
public string NFirstButtonImgurl
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["firstimg"] == null ? "" : ViewState["firstimg"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["firstimg"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("上一页按钮的图片路径")]
public string NPreviousButtonImgUrl
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["preimg"] == null ? "" : ViewState["preimg"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["preimg"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("下一页按钮的图片路径")]
public string NNextButtonImgUrl
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["nextimg"] == null ? "" : ViewState["nextimg"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["nextimg"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("尾页按钮的图片路径")]
public string NLastButtonImgUrl
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["lastimg"] == null ? "" : ViewState["lastimg"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["lastimg"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("读取配置文件中的连接字符串")]
public string NConString
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["key"] == null ? "conString" : ViewState["key"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["key"] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[Description("存储过程名称.默认值=sp_PageView")]
public string NProcName
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ViewState["proc"] == null ? "proc_Navigation" : ViewState["proc"].ToString();
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ViewState["proc"] = value;
}
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
定义方法#region 定义方法
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private Control control;
public override void DataBind()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (Page == null)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return;
}
FindControl(Page);
if (control == null)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
throw new Exception("没有指定绑定的控件或找不到要绑定的控件");
}
if (control is DataList)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
DataList datalist = (DataList)control;
datalist.DataSource = GetDataSource();
datalist.DataBind();
}
else if (control is GridView)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
GridView gridview = (GridView)control;
gridview.DataSource = GetDataSource();
gridview.DataBind();
}
dropvalue.Items.Clear();
for (int i = 1; i <= NPageCount; i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
dropvalue.Items.Add(i.ToString());
}
if (NPageCount > 0)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
dropvalue.SelectedIndex= NPageCurrent-1;
}
ButtonShow();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void FindControl(Control c)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
foreach (Control con in c.Controls)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (con.ID == NControlID)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
control = con;
return;
}
FindControl(con);
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private DataTable GetDataSource()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
string conString = System.Configuration.ConfigurationSettings.AppSettings[NConString];
if (conString == null)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
throw new Exception("无法获得配置文件中的连接字符串");
}
using (SqlConnection con = new SqlConnection(conString))
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
SqlCommand com = new SqlCommand(NProcName, con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@tableName", NTableName);
com.Parameters.AddWithValue("@PageCurrent", NPageCurrent);
com.Parameters.AddWithValue("@PageSize", NPageSize);
com.Parameters.AddWithValue("@FieldShow", NFieldShow);
com.Parameters.AddWithValue("@FieldOrder", NFieldOrder);
com.Parameters.AddWithValue("@Where", NWhere);
SqlParameter p = new SqlParameter("@PageCount", SqlDbType.Int);
p.Direction = ParameterDirection.Output;
com.Parameters.Add(p);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
SqlDataAdapter ada = new SqlDataAdapter();
ada.SelectCommand = com;
DataTable table = new DataTable();
ada.Fill(table);
ViewState["count"] = int.Parse(p.Value.ToString());
return table;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void ButtonShow()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (NPageCurrent <= 1)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
linkFirst.Enabled = false;
linkPrevious.Enabled = false;
imgFirst.Enabled = false;
imgPrevious.Enabled = false;
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
linkFirst.Enabled = true;
linkPrevious.Enabled = true;
imgFirst.Enabled = true;
imgPrevious.Enabled = true;
}
if (NPageCurrent >= NPageCount)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
linkNext.Enabled = false;
linkLast.Enabled = false;
imgNext.Enabled = false;
imgLast.Enabled = false;
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
linkNext.Enabled = true;
linkLast.Enabled = true;
imgNext.Enabled = true;
imgLast.Enabled = true;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected override void Render(HtmlTextWriter writer)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
EnsureChildControls();
writer.AddAttribute(HtmlTextWriterAttribute.Width, this.Width.ToString());
writer.AddAttribute(HtmlTextWriterAttribute.Height, this.Height.ToString());
writer.AddAttribute(HtmlTextWriterAttribute.Bgcolor, "White");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.AddAttribute(HtmlTextWriterAttribute.Style, "font-size:12px");
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
writer.AddAttribute(HtmlTextWriterAttribute.Valign, "Middle");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("当前在 " + (NPageCurrent) + "/" + NPageCount + " 页");
writer.RenderEndTag();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.RenderBeginTag(HtmlTextWriterTag.Td);
if (NButtonType == ButtonType.ImageButton)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
imgFirst.RenderControl(writer);
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
linkFirst.RenderControl(writer);
}
writer.RenderEndTag();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.RenderBeginTag(HtmlTextWriterTag.Td);
if (NButtonType == ButtonType.ImageButton)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
imgPrevious.RenderControl(writer);
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
linkPrevious.RenderControl(writer);
}
writer.RenderEndTag();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.RenderBeginTag(HtmlTextWriterTag.Td);
if (NButtonType == ButtonType.LinkButton)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
linkNext.RenderControl(writer);
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
imgNext.RenderControl(writer);
}
writer.RenderEndTag();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.RenderBeginTag(HtmlTextWriterTag.Td);
if (NButtonType == ButtonType.LinkButton)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
linkLast.RenderControl(writer);
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
imgLast.RenderControl(writer);
}
writer.RenderEndTag();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.AddAttribute(HtmlTextWriterAttribute.Valign, "Middle");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("转到");
writer.RenderEndTag();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.AddAttribute(HtmlTextWriterAttribute.Valign, "Middle");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
dropvalue.RenderControl(writer);
writer.RenderEndTag();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.AddAttribute(HtmlTextWriterAttribute.Valign, "Middle");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("页");
writer.RenderEndTag();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
writer.RenderEndTag();
writer.RenderEndTag();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public enum ControlType
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
DataList,
GridView
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public enum ButtonType
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
LinkButton,
ImageButton
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
存储过程
create PROC proc_Navigation
@tableName varchar(100), --要分页显示的表名
@PageCurrent int=1, --要显示的页码
@PageSize int=10, --每页的大小(记录数)
@FieldShow nvarchar(1000)='', --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
@FieldOrder nvarchar(1000)='', --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC,用于指定排序顺序
@Where nvarchar(1000)='', --查询条件
@PageCount int output
as
SET XACT_ABORT ON -- 打开 try功能
BEGIN TRY --开启事务
begin tran
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//***(游标)获取表主键(多个用逗号分隔)***/
declare @keyName varchar(200)
declare @name varchar(200)
set @keyName=''
declare mycursor cursor
for
select column_name from information_schema.key_column_usage
where table_name = @tableName and constraint_name like 'PK_%'
open mycursor
fetch mycursor into @name
while @@fetch_status<>-1
if @@fetch_status <>-2
begin
set @keyName = @keyName + @name + ','
fetch mycursor into @name
end
close mycursor
deallocate mycursor
set @keyName = subString(@keyName,1,len(@keyName)-1)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//***设置要显示的字段***/
declare
@FieldShow1 varchar(1000)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
if len(@FieldShow)=0
begin
set @FieldShow1 = ' * ' --输入的要显示的字段为空字符串时,设置为*
end
else
begin
set @FieldShow1 = @FieldShow --将要显示的字段名赋值给变量@FieldShow1
end
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//***设置排序字段***/
declare
@FieldOrder1 varchar(100)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
if len(@FieldOrder) = 0
begin
set @FieldOrder1 = ''
end
else
begin
set @FieldOrder1 = ' order by '+@FieldOrder
end
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//***设置where条件***/
declare
@where1 varchar(1000)
if len(@Where) = 0
begin
set @where1 = ''
end
else
begin
set @where1 = ' where '+@Where
end
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//***写分页sql语句***/
declare
@startnumber int, --开始行数
@endnumber int, --结束行数
@sql varchar(5000) --分页SQL语句
set @startnumber = (@PageCurrent-1)*@PageSize --根据每行页数和页数设置开始行数
set @endnumber = @PageCurrent*@PageSize --根据每行页数和页数设置结束行数 --主键名
set @sql =
'select * from (select row_number() over(order by '+
@keyName+') row_num,'+
@FieldShow1+' from '+
@tableName+
@where1 +')tablename where row_num > '+
convert(varchar(5),@startnumber)+' and row_num <= '+
convert(varchar(5),@endnumber)+
@FieldOrder1 --设置分页SQL语句
print @sql
exec (@sql)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//***输出参数@PageCount***/
IF @PageCount IS NULL
BEGIN
DECLARE @text nvarchar(4000)
SET @text=N'SELECT @PageCount=COUNT(*) '
+N' FROM '+@tableName
+N' '+@where1
EXEC sp_executesql @text,N'@PageCount int OUTPUT',@PageCount OUTPUT
SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
END
commit tran --提交事务
print 'commited'
END TRY
BEGIN CATCH
rollback --事务回滚
print 'rolled back'
END CATCH
go
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
declare @a int
exec proc_Navigation 'aa',1,8,'','','',@a output
print @a
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
,
这个送给你!
原文地址:https://www.cnblogs.com/di305449473/p/1239782.html