pagenumberer.cs
来自「Club Site Starter Kit.rar .net 压缩包解压时不能」· CS 代码 · 共 196 行
CS
196 行
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Control that displays a list of page numbers based on the selected page,
/// number of displayed pages, and the count of pages
/// </summary>
namespace ClubSite
{
public class PageNumberer : WebControl, IPostBackEventHandler
{
private int m_SelectedPage, m_Count, m_displayedPages;
public PageNumberer()
{
//No constructor logic.
}
public int SelectedPage
{
get
{
if (m_SelectedPage == 0)
{
object o = ViewState["SelectedPage"];
m_SelectedPage = (o != null) ? (int)o : 1;
}
return m_SelectedPage;
}
set
{
ViewState["SelectedPage"] = value;
m_SelectedPage = value;
}
}
public int Count
{
get
{
if (m_Count == 0)
{
object o = ViewState["Count"];
m_Count = (o != null) ? (int)o : 1;
}
return m_Count;
}
set
{
ViewState["Count"] = value;
m_Count = value;
}
}
public int DisplayedPages
{
get
{
if (m_displayedPages == 0)
{
object o = ViewState["DisplayedPages"];
m_displayedPages = (o != null) ? (int)o : 1;
}
return m_displayedPages;
}
set
{
ViewState["DisplayedPages"] = value;
m_displayedPages = value;
}
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Div;
// uncomment for a table
// return HtmlTextWriterTag.Table;
}
}
protected override void RenderContents(HtmlTextWriter writer)
{
int prevListCount, nextListCount, startPage, endPage;
prevListCount = Math.Abs((m_displayedPages - 1) / 2);
if (m_SelectedPage <= prevListCount) prevListCount = m_SelectedPage - 1;
nextListCount = m_displayedPages - prevListCount - 1;
if (m_SelectedPage + nextListCount > m_Count) nextListCount = m_Count - m_SelectedPage;
startPage = m_SelectedPage - prevListCount;
endPage = m_SelectedPage + nextListCount;
// uncomment for a table
// writer.RenderBeginTag(HtmlTextWriterTag.Tr);
if (startPage > 1)
{
renderItem(writer, "« First", 1);
}
if (SelectedPage > 1)
{
renderItem(writer, "< Prev", SelectedPage - 1);
}
for (int count = startPage; count <= endPage; count++)
{
string label;
if (count != endPage)
label = count.ToString() + ",";
else
label = count.ToString();
if (count == m_SelectedPage)
{
renderItem(writer, label, 0);
}
else
{
renderItem(writer, label, count);
}
}
if (SelectedPage < m_Count)
{
renderItem(writer, "Next >", SelectedPage + 1);
}
if (endPage < m_Count)
{
renderItem(writer, "Last »", m_Count);
}
}
void renderItem(HtmlTextWriter writer, string text, int pageNum)
{
writer.RenderBeginTag(HtmlTextWriterTag.Span);
if (pageNum!=0)
{
writer.AddAttribute(HtmlTextWriterAttribute.Href, Page.ClientScript.GetPostBackClientHyperlink(this,pageNum.ToString()));
writer.RenderBeginTag(HtmlTextWriterTag.A);
}
writer.Write(text);
if (pageNum!=0)
{
writer.RenderEndTag();
}
writer.RenderEndTag();
}
private static readonly object EventSelectedPageChanged = null;
public event EventHandler SelectedPageChanged
{
add
{
Events.AddHandler(EventSelectedPageChanged,value);
}
remove
{
Events.RemoveHandler(EventSelectedPageChanged, value);
}
}
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
int newPage;
if (int.TryParse(eventArgument, out newPage))
{
this.SelectedPage = newPage;
OnSelectedPageChanged(EventArgs.Empty);
}
}
protected virtual void OnSelectedPageChanged(EventArgs e)
{
EventHandler changehandler = (EventHandler)Events[EventSelectedPageChanged];
if (changehandler != null)
{
changehandler(this, e);
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?