asp.net 分页控件与执行分页的存储过程

本文详细介绍了如何在ASP.NET中使用控件进行分页操作,并结合存储过程来提高性能。通过实例展示了如何创建分页Hyperlink控件,以及如何在后台处理分页请求,使用SQL Server的存储过程进行数据检索。
摘要由CSDN通过智能技术生成
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Pager.ascx.cs" Inherits="UserControl_Pager" %>
<p>
    第<asp:Label ID="currentPage" runat="server" />页,
    共<asp:Label ID="howManyPages" runat="server" />页

    <asp:HyperLink ID="startLink" runat="server">首页</asp:HyperLink>
    <asp:HyperLink ID="previousLink" runat="server">上一页</asp:HyperLink>

    <asp:Repeater ID="pagesRepeater" runat="server">
        <ItemTemplate>
    <asp:HyperLink ID="hyperlink" runat="server" Text='<%# Eval("Page")  %>' NavigateUrl='<%# Eval("Url") %>' />
  </ItemTemplate>
    </asp:Repeater>

    <asp:HyperLink ID="nextLink" runat="server">下一页</asp:HyperLink>
    <asp:HyperLink ID="endLink" runat="server">尾页</asp:HyperLink>
</p>


 

 

using System;

//用于数据源的结构
public struct PageUrl
{
    private string page;
    private string url;

    public string Page
    {
        get { return page; }
    }
    public string Url
    {
        get { return url; }
    }

    public PageUrl(string page, string url)
    {
        this.page = page;
        this.url = url;
    }
}

public partial class UserControl_Pager : System.Web.UI.UserControl
{
    //暴露的属性
    public int CurPage { set; get; }
    public int HowManyPages { set; get; }
    public string PageUrlFormat { set; get; }

    protected void Page_Load(object sender, EventArgs e)
    {
        //根据暴露的属性填充属性
        currentPage.Text = CurPage.ToString();
        howManyPages.Text = HowManyPages.ToString();

        //如果多余一页
        
        //如果是第一页
        if (CurPage == 1)
        {
            startLink.Visible = false;
            previousLink.Visible = false;
        }
        //如果是最后一页
        if (CurPage == HowManyPages)
        {
            endLink.Visible = false;
            nextLink.Visible = false;
        }

        //设置导航链接的url
        startLink.NavigateUrl = String.Format(PageUrlFormat, 1);
        previousLink.NavigateUrl = String.Format(PageUrlFormat, CurPage - 1);
        nextLink.NavigateUrl = String.Format(PageUrlFormat, CurPage + 1);
        endLink.NavigateUrl = String.Format(PageUrlFormat, HowManyPages);

        //设置中间数字区域的导航url
        PageUrl[] pages = new PageUrl[HowManyPages];
        for (int i = 1; i <= HowManyPages; i++)
        {
            pages[i - 1] = new PageUrl(i.ToString(), String.Format(PageUrlFormat, i));
        }
        //取消当前页的URL
        pages[CurPage - 1] = new PageUrl(CurPage.ToString(), "");

        //向pagesRepeater绑定数据
        pagesRepeater.DataSource = pages;
        pagesRepeater.DataBind();    
        
    }
}


 

 

 

CREATE PROCEDURE GetMoviesAndSource
	@Start int,
	@Count int,
	@HowManyMovies int output
AS
BEGIN
	DECLARE @Movies TABLE
	(
		RowNumber INT,
		ID INT,
		Title TEXT,
		Description NTEXT,
		Image VARCHAR(20),
		FileSize VARCHAR(10),
		Format VARCHAR(5),
		LinkRate TINYINT,
		Resolution VARCHAR(15),
		Duration VARCHAR(10),
		Definition TINYINT,
		Published DATETIME,
		CodeRate SMALLINT,
		FileCount TINYINT
	)

	INSERT INTO @Movies
	SELECT ROW_NUMBER() OVER (ORDER BY Movie.ID DESC), Movie.ID, Title, Description, Image, 
	FileSize, Format, LinkRate, Resolution, Duration, Definition, Published, CodeRate, FileCount
	FROM Movie INNER JOIN MovieSource ON Movie.ID = MovieSource.ID

	SELECT @HowManyMovies = COUNT(ID) FROM @Movies

	SELECT ID, Title, Description, Image, 
	FileSize, Format, LinkRate, Resolution, Duration, Definition, Published, CodeRate, FileCount
	FROM @Movies
	WHERE RowNumber > (@Start - 1) * @Count 
	  AND RowNumber <= @Start * @Count
	  END


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值