知识大全 ASP.NET存储过程自定义分页详解

Posted

篇首语:好学而不勤问非真好学者。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET存储过程自定义分页详解相关的知识,希望对你有一定的参考价值。

ASP.NET存储过程自定义分页详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    */     */ 出自 编程中国     */ 作者 hebingbing    */ 时间 编程论坛首发    */ 声明 光看我这么晚了还在工作 转载这段文字应该保留吧……    */     废话 清明节 同学回家的回家 旅游的旅游……我离家远是不可能回家了 旅游吧不感兴趣 觉得还不如看一场电影……呵呵 从小不喜欢旅游观光……    转入正题 大家都知道中的Gridview datalist等都可以自定义分页 但是当你翻页的时候 数据表中的所有数据都会加载到内存 重新绑定 当然要是数据量小的话 这是可以的 我们也很乐意用 原因简单因为方便 但是要是数据量是 …… 在信息爆炸的这个时代海量数据是经常的时 那么这些控件自带的分页就显得有些……    解决这个问题办法就是自己动手……不多废话了 看代码     首先我是用存储过程来解决的 要弄懂这个问题 首先要从存储过程下手 代码如下     CREATE proc getdataset    @TableList Varchar( )= * 搜索表的字段 比如 id datatime job 用逗号隔开    @TableName Varchar( ) 搜索的表名    @SelectWhere Varchar( )= 搜索条件 这里不用写where 比如 job= teacher and class=     @SelectOrderId Varchar( ) 表主键字段名 比如 id    @SelectOrder Varchar( )= 排序 可以使用多字段排序但主键字段必需在最前面 也可以不写 比如 order by class asc    @intPageNo int= 页号    @intPageSize int= 每页显示数    @RecordCount int OUTPUT  总记录数(存储过程输出参数)    as    declare @TmpSelect      NVarchar( )    declare @Tmp     NVarchar( )    set nocount on 关闭计数    set @TmpSelect = select @RecordCount = count(*) from +@TableName+ +@SelectWhere    execute sp_executesql    @TmpSelect     执行上面的sql语句    N @RecordCount int OUTPUT    执行输出数据的sql语句 output出总记录数    @RecordCount  OUTPUT    if (@RecordCount = )    如果没有贴子 则返回零    return     /*判断页数是否正确*/    if (@intPageNo ) * @intPageSize > @RecordCount   页号大于总页数 返回错误    return ( )    set nocount off 打开计数    if @SelectWhere !=     begin    set @TmpSelect = select top +str(@intPageSize)+ +@TableList+ from +@TableName+ where +@SelectOrderId+ not in(select top +str((@intPageNo )*@intPageSize)+ +@SelectOrderId+ from +@TableName+ +@SelectWhere + +@SelectOrder+ ) and +@SelectWhere + +@SelectOrder    end    else    begin    set @TmpSelect = select top +str(@intPageSize)+ +@TableList+ from +@TableName+ where +@SelectOrderId+ not in(select top +str((@intPageNo )*@intPageSize)+ +@SelectOrderId+ from +@TableName+ +@SelectOrder+ ) +@SelectOrder    end    execute sp_executesql @TmpSelect    return(@@rowcount)    GO    其实代码也很简单 学编程的人基本上都是懂数据库的 这个存储过程估计不是问题     其他的代码我都做了解释 有颜色的那段我没有解释 我在这里解释一下 其实也很简单 大家来看     select top +str((@intPageNo )*@intPageSize)+ +@SelectOrderId+ from +@TableName+ +@SelectWhere + +@SelectOrder+     这段代码的执行结果是什么了 是不是当前页前面的主键的集合啊 现在我们从所有的表中选出主键的值不在这个结果的之内的pagesize个记录不就是当前页的内容了吗?    aspx页面就不用再将了吧?我这里将代码写上     <%@ Page Language= C# AutoEventWireup= true CodeFile= aa aspx cs Inherits= _Default %>    <!DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN transitional dtd >    < xmlns= >    <head runat= server >    <title>无标题页</title>    </head>    <body>    <form id= form runat= server >    <div>    <asp:GridView ID= GridView runat= server AutoGenerateColumns= False Height= px Width= px >    <Columns>    <asp:BoundField DataField= job_id HeaderText= job_id />    <asp:BoundField DataField= job_desc HeaderText= job_desc />    <asp:BoundField DataField= max_lvl HeaderText= max_lxl />    </Columns>    </asp:GridView>    </div>    <asp:HyperLink ID= hylfirst runat= server >首页</asp:HyperLink>    <asp:HyperLink ID= hylprev runat= server >上一页</asp:HyperLink>    <asp:HyperLink ID= hylnext runat= server >下一页</asp:HyperLink>    <asp:HyperLink ID= hylend runat= server >尾页</asp:HyperLink>    第<asp:Label ID= lbRow runat= server Text= Label ></asp:Label>页     共<asp:Label ID= lbpage runat= server Text= Label ></asp:Label>页 共<asp:Label    ID= lbRecord runat= server Text= Label ></asp:Label>条记录 转到<asp:TextBox ID= txtlink     runat= server Width= px ></asp:TextBox>    页<asp:LinkButton ID= link runat= server OnClick= link_Click TabIndex= >转到</asp:LinkButton>    </form>    </body>    </>     cs页面其实也每页什么好讲的 也就是一些常用的代码罢了……我把代码加上 大家看看 要是有疑问的可以回复我再解释     using System;    using System Data;    using System Configuration;    using System Collections;    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;    using System Data SqlClient;    public partial class _Default : System Web UI Page        protected void Page_Load(object sender EventArgs e)        this bind()         protected void link_Click(object sender EventArgs e)        int page = Convert ToInt (txtlink Text)     Response Redirect( aa aspx?CurrentPage= +page+ )         public void bind()        int sumPage;    int pageNo = ;    int pageSize = ;    if (Request QueryString[ CurrentPage ] == null)        pageNo = ;        else        pageNo = Int Parse(Request QueryString[ CurrentPage ])         SqlConnection conn = new SqlConnection(ConfigurationManager AppSettings[ ConStr ])     SqlDataAdapter da = new SqlDataAdapter()     da SelectCommand = new SqlCommand()     da SelectCommand Connection = conn;    da SelectCommand CommandText = getdataset ;    da SelectCommand CommandType = CommandType StoredProcedure;    da SelectCommand Parameters Add( @TableList SqlDbType VarChar ) Value = job_id job_desc max_lvl ;    da SelectCommand Parameters Add( @TableName SqlDbType VarChar ) Value = jobs ;    //da SelectCommand Parameters Add( @SelectWhere SqlDbType VarChar ) Value = where d= ;    da SelectCommand Parameters Add( @SelectOrderId SqlDbType VarChar ) Value = job_id ;    da SelectCommand Parameters Add( @SelectOrder SqlDbType VarChar ) Value = order by min_lvl asc ;    da SelectCommand Parameters Add( @intPageNo SqlDbType Int) Value = pageNo;    da SelectCommand Parameters Add( @intPageSize SqlDbType Int) Value = pageSize;    da SelectCommand Parameters Add( @RecordCount SqlDbType Int) Direction = ParameterDirection Output;    da SelectCommand Parameters Add( RowCount SqlDbType Int) Direction = ParameterDirection ReturnValue;    DataSet ds = new DataSet()     da Fill(ds jobs )     GridView DataSource = ds;    GridView DataBind()     Int RecordCount = (Int )da SelectCommand Parameters[ @RecordCount ] Value; //求出总记录数 该值是output出来的值    Int RowCount = (Int )da SelectCommand Parameters[ RowCount ] Value;         //求出当前页中的记录数 在最后一页不等于pagesize     lbRecord Text = RecordCount ToString()     lbRow Text = pageNo ToString()     sumPage = (Int )RecordCount / pageSize;    if (RecordCount % pageSize > )        sumPage = sumPage + ;        lbpage Text = sumPage ToString()     if (pageNo > )        hylfirst NavigateUrl = aa aspx?CurrentPage= ;    hylprev NavigateUrl = string Concat( aa aspx?CurrentPage= pageNo )         else        hylprev NavigateUrl = ;    hylfirst NavigateUrl = ;    hylfirst Visible = false;    hylprev Visible = false;        if (pageNo < sumPage)        hylend NavigateUrl = string Concat( aa aspx?CurrentPage= sumPage)     hylnext NavigateUrl = string Concat( aa aspx?CurrentPage= pageNo + )         else        hylnext NavigateUrl = ;    hylend NavigateUrl = ;    hylend Visible = false;    hylnext Visible = false;                就这样吧 要是大家有疑问 回帖我们再讨论 在研究…… cha138/Article/program/net/201311/12114

相关参考

知识大全 基于ASP.NET的自定义分页显示[3]

基于ASP.NET的自定义分页显示[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 基于ASP.NET的自定义分页显示[4]

基于ASP.NET的自定义分页显示[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 基于ASP.NET的自定义分页显示[2]

基于ASP.NET的自定义分页显示[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Asp.net中DataGrid控件的自定义分页

Asp.net中DataGrid控件的自定义分页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET中自定义DataGrid分页设置的实现

ASP.NET中自定义DataGrid分页设置的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 自定义分页控件源码asp.net(c#)

  可能大家有用得着的地方发出来一起研究下代码如下  Pagercs 服务器控件源代码  usingSystem;   usingSystemWeb; 

知识大全 ASP.NET利用存储过程实现分页

ASP.NET利用存储过程实现分页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先说下思路写

知识大全 在asp.net中使用存储过程

  存储过程的定义  CREATEprocedurepro_buyGoods  (  @GoodsNamevarchar()  @GoodsNumint  )  AS  declare@countas

知识大全 ASP.NET自定义错误页面

ASP.NET自定义错误页面  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET提供三种

知识大全 ASP.NET自定义错误处理页面的添加

ASP.NET自定义错误处理页面的添加  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自定义错误