1.自定义分页

PageNumberer.cs

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, "&laquo; First", 1);
            }

            if (SelectedPage > 1)
            {
                renderItem(writer, "&lt; 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 &gt;", SelectedPage + 1);
            }

            if (endPage < m_Count)
            {
                renderItem(writer, "Last &raquo;", 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);
            }
        }
    }
}

存储过程:


ALTER PROCEDURE PagedAnnouncementList 
(
    @pageNum INT = 1,
    @pageSize INT = 10
)
    
AS
    DECLARE @rows INT
    DECLARE @keydate DATETIME
    DECLARE @keyid INT
    DECLARE @rowCount FLOAT /**//* yes we need a float for the math */
    
    IF @pageNum = 1
        BEGIN
            SET @keydate= 0
            SET @keyid=0
        END
    ELSE
        BEGIN
            /**//* get the values for the date and row */
            SELECT @rows = (@pageNum-1) * @pageSize
            SET ROWCOUNT  @rows
            SELECT @keydate=itemdate, @keyid=id FROM announcements ORDER BY itemdate ASC, id ASC  
        END

SELECT @rowCount=COUNT(*) FROM announcements

SET  ROWCOUNT @pageSize
    SELECT id, itemdate, title, description, photo FROM Announcements 
    WHERE (itemdate > @keydate OR
            (itemdate = @keydate) AND (id > @keyid))
    ORDER BY itemdate ASC, id ASC 
    RETURN CEILING(@rowCount/@pageSize)

前台页面

<%@ Page Language="C#" MasterPageFile="~/Default.master" Title="News Articles" %>

<%@ Register TagPrefix="Club" Namespace="ClubSite" %>
<%@ Register TagPrefix="Club" TagName="LoginBanner" Src="LoginBanner.ascx" %>
<%@ Register TagPrefix="Club" TagName="ImageThumbnail" Src="ImageThumbnail.ascx" %>

<script runat="server">

    protected void SqlDataSource1_Selected(object sender, System.Web.UI.WebControls.SqlDataSourceStatusEventArgs e)
    {
        int pages;
        pages = (int)e.Command.Parameters["@pageCount"].Value;
        pn1.Count = pages;
        Pn2.Count = pages;
    }

    protected void pn1_SelectedPageChanged(object sender, System.EventArgs e)
    {
        Pn2.SelectedPage = pn1.SelectedPage;
    }

    protected void Pn2_SelectedPageChanged(object sender, System.EventArgs e)
    {
        pn1.SelectedPage = Pn2.SelectedPage;
    }
    private bool IsAdmin;

    protected void Page_Load(object sender, System.EventArgs e)
    {
        IsAdmin = User.IsInRole("Administrators");
        panel1.Visible = IsAdmin;
    }
</script>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <div id="body">
        <Club:LoginBanner ID="LoginBanner1" runat="server" />
        <!--
        
        Left column
        
        -->
        <div id="columnleft">
            <a name="content_start" id="content_start"></a>
            <div class="leftblock">
                <h2>
                    News Articles</h2>
                <p>
                    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
                    euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad
                    minim veniam, quis nostrud exercitation ulliam corper suscipit lobortis nisl ut
                    aliquip ex ea commodo consequat. Duis autem veleum iriure dolor in hendrerit in
                    vulputate velit esse molestie consequat, vel willum lunombro dolore eu feugiat nulla
                    facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent
                    luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p>
            </div>
        </div>
        <!--
        
        Right column
        
        -->
        <div id="columnright">
            <div class="rightblock">
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>"
                    SelectCommand="PagedAnnouncementList" SelectCommandType="StoredProcedure" OnSelected="SqlDataSource1_Selected">
                    <SelectParameters>
                        <asp:ControlParameter Name="pageNum" ControlID="pn1" PropertyName="SelectedPage" />
                        <asp:Parameter DefaultValue="10" Name="pageSize" Type="Int32" />
                        <asp:Parameter Name="pageCount" Direction="ReturnValue" Type="Int32" />
                    </SelectParameters>
                </asp:SqlDataSource>
                <asp:Panel ID="panel1" runat="server" CssClass="actionbuttons">
                    <Club:RolloverLink ID="RemoveBtn" runat="server" Text="Add new Article" NavigateURL="News_Edit.aspx?Action=New" />
                </asp:Panel>
                <div class="dashedline">
                </div>
                <div class="newscrumbs">
                    Page:
                    <Club:PageNumberer ID="pn1" runat="server" CssClass="PageNumbers" DisplayedPages="7"
                        OnSelectedPageChanged="pn1_SelectedPageChanged" />
                </div>
                <div class="dashedline">
                </div>
                <!-- begin news item -->
                <asp:Repeater ID="DataList1" runat="server" DataSourceID="SqlDataSource1">
                    <ItemTemplate>
                        <div class="listitem">
                            <div class="thumbnail">
                                <a href='<%# "News_View.aspx?Articleid=" + Convert.ToString( Eval("ID"))%>'>
                                    <Club:ImageThumbnail ID="ImageThumbnail1" runat="server" PhotoID='<%# Eval("photo") %>'
                                        NoPhotoImg="images/news.jpg" />
                                </a>
                            </div>
                            <asp:Panel ID="panel2" runat="server" Visible='<%#IsAdmin %>'>
                                <Club:RolloverLink ID="EditBtn" runat="server" Text="Edit" NavigateURL='<%# "News_Edit.aspx?Action=Edit&ArticleID=" + Convert.ToString( Eval("ID")) %>' />
                                <Club:RolloverLink ID="RemoveBtn" runat="server" Text="Remove" NavigateURL='<%# "News_Edit.aspx?Action=Remove&ArticleID=" + Convert.ToString( Eval("ID")) %>' />
                            </asp:Panel>
                            <h3>
                                <asp:Label ID="itemdateLabel" runat="server" Text='<%# Eval("itemdate","{0:d}") %>' />
                                &nbsp;&nbsp;&nbsp;&nbsp; <a href='<%# "news_view.aspx?articleid=" + Convert.ToString( Eval("ID"))%>'>
                                    <asp:Label ID="titleLabel" runat="server" Text='<%# Eval("title") %>' />
                                </a>
                            </h3>
                            <p>
                                <asp:Label ID="descriptionLabel" runat="server" Text='<%# SharedRoutines.truncate((string)Eval("description")) %>' />
                                <a href='<%# "news_view.aspx?articleid=" + Convert.ToString( Eval("ID"))%>'>read more &raquo;</a></p>
                            <div class="clearlist">
                            </div>
                        </div>
                    </ItemTemplate>
                </asp:Repeater>
                <div class="dashedline">
                </div>
                <div class="newscrumbs">
                    Page:
                    <Club:PageNumberer ID="Pn2" runat="server" DisplayedPages="7" CssClass="PageNumbers"
                        OnSelectedPageChanged="Pn2_SelectedPageChanged" />
                </div>
            </div>
        </div>
        <div class="clear2column">
        </div>
    </div>
</asp:Content>

2。还有其他的就不列举了。

转载于:https://www.cnblogs.com/csuwhl/archive/2006/09/07/498116.html

Club Web Site-Customized web controls相关推荐

  1. Windows Azure Web Site (9) Web Site公网IP地址

    <Windows Azure Platform 系列文章目录> 本文会同时介绍国内由世纪互联运维的Azure China和海外Azure Global. 熟悉Windows Azure平台 ...

  2. [New Portal]Windows Azure Web Site (4) Web Site Gallery

    <Windows Azure Platform 系列文章目录> 前言:最近因为工作变动,更新博客的速度变慢了.笔者在这边感到非常抱歉,以后尽量每周更新一篇Windows Azure的博客给 ...

  3. (Asp.Net)转载-用Powershell 建立IIS web site

    受到continuous delivery 觀念的灌輸,新的專案都盡量朝向能自動化的建置及部署 因為目前使用TFS 2010 ,專案都是web system,這部分倒是網路上有不少文章可以參考,還算容 ...

  4. ASP.NET 2.0 Club Web Site Starter Kit 补丁

    ASP.NET2.0  Club Web Site Starter Kit 具有一个很大的缺陷:不支持中文. 这里给出两种解决方案供大家参考 方法一: 1)由于大家大部分都是用SQL SERVER20 ...

  5. Azure China (7) 使用WebMetrix将Web Site发布至Azure China

    <Windows Azure Platform 系列文章目录> 本章介绍的是,使用世纪互联运维的Azure云服务. 1.首先我们登陆Azure管理界面.http://manage.wind ...

  6. VS2008 Web Application和Web Site的区别_转载

    MSDN 原文(英文)地址:http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx 以下是主要内容的中文翻译: Visual Stud ...

  7. windows7 安装IIS没有default web site 解决方法

    因当时是第一次在Windows 7上使用IIS,不小心把default web site删除了,后来无论怎么重装IIS都不行,最后想到能不能直接把别人安装好后的IIS相关文件夹拷过来使用,用宿舍一哥们 ...

  8. SharePoint 升级 Web Site 模式

    大家在日常的SharePoint运维中或者升级中,经常会遇到需要升级站点模式.其实我遇到这个问题的时候,就是从SP13升级到SP16时碰见的,所以今天分享给大家. 首先我们要知道一点,在SharePo ...

  9. Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR

    <Windows Azure Platform 系列文章目录> 我们知道,Azure Web Site (改名为Azure Web App)默认是可以保留Session的.Azure We ...

  10. [转]Best Practices for Speeding Up Your Web Site

    本文转自:http://developer.yahoo.com/performance/rules.html#minify The Exceptional Performance team has i ...

最新文章

  1. Redis与Memcache的对比
  2. Mysql 使用下载的zip文件进行安装启动
  3. 用Go语言建立一个简单的区块链part3:持久化和命令行接口
  4. 云原生网关开源、自研、商业化三位一体战略背后的思考
  5. JavaFx实现-渐变效果之一
  6. 【GDC 21】《对马岛之魂》战斗系统讲解
  7. 20个非常好用的正则表达式
  8. 前端学习(1115):call apply bind的区别
  9. hdoj_1166_敌兵布阵_树状数组
  10. python数据分析之(4)读写数据文件CSV,EXCEL等
  11. spring aop advice
  12. VUE源码解析(持续更新)
  13. 为什么抖音账号作品很少粉丝却很多,抖音删除的粉丝还能看到吗
  14. 大白菜装机教程win10_如何通过U盘重装win10系统?
  15. SWF编辑器,替换SWF图片的工具下载
  16. 有没有手机版_漫威定制版智能手机壳 Galaxy S10的小伙伴不容错过
  17. ARM 安装中文输入法
  18. 人际关系三维理论(转载)
  19. 九大PPT制作伴侣【神器】
  20. oracle 应收 系统选项,R12 总账 应收 应付 税 基本设置 (图文版)

热门文章

  1. Visual C#中的(ListBox)数据绑定
  2. 剑指offer 面试64题
  3. 一个利用Dataflow实现的Actor
  4. 父亲节感恩回馈PSD海报
  5. poj 1637(混合图求欧拉回路)
  6. Spring Security 2 配置精讲
  7. 鸿蒙之境的称号,《神都夜行录》鸿蒙之境80级古都凶煞打法
  8. hdu4740 不错的简单搜索
  9. 【数字信号处理】基本序列 ( 基本序列列举 | 单位脉冲序列 | 单位脉冲函数 | 离散单位脉冲函数 | 单位脉冲函数 与 离散单位脉冲函数的区别 )
  10. 【Git】Git 标签使用 ( 创建并查询标签 | 推送单个标签到远程仓库 | 推送所有标签到远程仓库 | 删除远程仓库的标签 )