您的位置:首页 > 编程语言 > ASP

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

2012-09-04 14:59 531 查看
<%@ 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: