当前位置:七道奇文章资讯网站建设网站编程
日期:2010-10-07 16:41:00  来源:本站整理

ASP.NET操纵存储历程自定义分页[网站编程]

赞助商链接



  本文“ASP.NET操纵存储历程自定义分页[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  1.首先我是用存储历程来办理的,要弄懂这个问题,首先要从存储历程下手.

代码以下:

  CREATE proc getdataset

  @TableList Varchar(200)='*',--搜索表的字段,比方:’id,datatime,job‘,用逗号离隔

  @TableName Varchar(30), --搜索的表名

  @SelectWhere Varchar(500)='',--搜索条件,这里不用写where,比方:job=’teacher‘and class='2'

  @SelectOrderId Varchar(20),--表主键字段名.比方:id

  @SelectOrder Varchar(200)='', --排序,可以利用多字段排序但主键字段必须在最前面.也可以不写,比方:order by class asc

  @intPageNo int=1, --页号

  @intPageSize int=10 ,--每页显示数

  @RecordCount int OUTPUT --总记录数(存储历程输出参数)

  as

  declare @TmpSelect NVarchar(600)

  declare @Tmp NVarchar(600)

  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 = 0) --假如没有贴子,则返回零

  return 0

  /*判断页数能否精确*/

  if (@intPageNo - 1) * @intPageSize > @RecordCount --页号大于总页数,返回错误

  return (-1)

  set nocount off--翻开计数

  if @SelectWhere != ''

  begin

  set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@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-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+' '+@SelectOrder+') '+@SelectOrder

  end

  execute sp_executesql @TmpSelect

  return(@@rowcount)

  GO

  其实代码也很简单,学编程的人基本上都是懂数据库的,这个存储历程预计不是问题.

  其他的代码我都做了注释,有颜色的那段我没有注释,我在这里注释一下.其实也很简单,大家来看:

  select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+' '+@SelectWhere +' '+@SelectOrder+'

  这段代码的履行后果是什么了,是不是当前页前面的主键的调集啊,目前我们从全部的表中选出主键的值不在这个后果的之内的pagesize个记录不就是当前页的内容了吗?

  2.aspx页面就不用再将了吧?我这里将代码写上:

  1.   <%@ Page Language="C#" AutoEventWireup="true" CodeFile="aa.aspx.cs" Inherits="_Default" %> 
  2.  
  3.   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  4.  
  5.   <html xmlns="http://www.w3.org/1999/xhtml" > 
  6.  
  7.   <head runat="server"> 
  8.  
  9.   <title>无标题页</title> 
  10.  
  11.   </head> 
  12.  
  13.   <body> 
  14.  
  15.   <form id="form1" runat="server"> 
  16.  
  17.   <div> 
  18.  
  19.   <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Height="180px" Width="867px"> 
  20.  
  21.   <Columns> 
  22.  
  23.   <asp:BoundField DataField="job_id" HeaderText="job_id" /> 
  24.  
  25.   <asp:BoundField DataField="job_desc" HeaderText="job_desc" /> 
  26.  
  27.   <asp:BoundField DataField="max_lvl" HeaderText="max_lxl" /> 
  28.  
  29.   </Columns> 
  30.  
  31.   </asp:GridView> 
  32.  
  33.   </div> 
  34.  
  35.   <asp:HyperLink ID="hylfirst" runat="server">首页</asp:HyperLink> 
  36.  
  37.   <asp:HyperLink ID="hylprev" runat="server">上一页</asp:HyperLink> 
  38.  
  39.   <asp:HyperLink ID="hylnext" runat="server">下一页</asp:HyperLink> 
  40.  
  41.   <asp:HyperLink ID="hylend" runat="server">尾页</asp:HyperLink> 
  42.  
  43.   第<asp:Label ID="lbRow" runat="server" Text="Label"></asp:Label>页,  
  44.  
  45.   共<asp:Label ID="lbpage" runat="server" Text="Label"></asp:Label>页,共<asp:Label 
  46.  
  47.   ID="lbRecord" runat="server" Text="Label"></asp:Label>条记录,转到<asp:TextBox ID="txtlink" 
  48.  
  49.   runat="server" Width="29px"></asp:TextBox> 
  50.  
  51.   页<asp:LinkButton ID="link" runat="server" OnClick="link_Click" TabIndex="1">转到</asp:LinkButton> 
  52.  
  53.   </form> 
  54.  
  55.   </body> 
  56.  
  57.   </html> 
  58.  


  以上是“ASP.NET操纵存储历程自定义分页[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • ASP利用正则表达式提取内容
  • nginx 反向代理iis支持 ASP脚本设置
  • <b>ASP.NET安全设置防备ASPXSpy</b>
  • Ubuntu Server+Apache 运行 asp.net
  • 怎样ASP.NET MVC调用Delphi开辟的Web报表
  • 学习ASP.NET需求举行的步骤办法
  • ASP.NET脚本过滤-避免跨站脚本攻击
  • Asp WinHttp.WinHttpRequest.5.1 对象利用详解
  • ASP防XSS注入函数
  • Asp 防备CC攻击模块 (Anti-CC.asp)
  • metasploit metasploit 中文系统安装失利问题
  • Ubuntu 11下安装Metasploit Pro 4.0.0
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .