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
相关文章推荐
- ASP.NET分页存储过程自定义用户控件
- ASP.NET分页存储过程自定义用户控件
- ASP.NET分页存储过程自定义用户控件
- ASP.NET调用Oracle分页存储过程并结合ASPnetpager分页控件 实现分页功能
- asp.net的DataGrid分页控件,在Oracle数据库下,每次只取当前页的数据,不使用存储过程。
- sql分页存储过程!与asp.net分页控件一起使用
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- asp.net安全、实用、简单的大容量存储过程分页第1/2页
- asp.net 操作带输入输出参数的分页存储过程(二)
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- 通用SQL存储过程分页以及asp.net后台调用的方法
- asp.net SQL存储过程分页
- asp.net/C# 执行存储过程技术要点,获取Return返回值,解决“存储过程总返回-1”的问题
- asp.net 操作带输入输出参数的分页存储过程(—)
- Asp.net中DataGrid控件的自定义分页以及存储过程的问题
- ASP.NET结合存储过程写的通用搜索分页程序