欢迎光临
我们一直在努力

一个简单的存储过程数据分页-ASP教程,数据库相关

建站超值云服务器,限时71元/月

1。数据库结构为:(在sql当中建立一个数据库后,直接在sql结构查询器当中执行以下sql脚本)

if exists (select * from dbo.sysobjects where id = object_id(n[dbo].[mobile]) and objectproperty(id, nisusertable) = 1)
drop table [dbo].[mobile]
go

create table [dbo].[mobile] (
 [mobileid] [int] identity (1, 1) not null ,
 [mobiletype] [nvarchar] (50) collate chinese_prc_ci_as null
) on [primary]
go

2。存储过程,(可以直接在数据库中新建存储过程,然后复制到数据库)

/*
存储过程分页
*/
create procedure proc_paging
(
@tbname nvarchar(255) ,
@sql nvarchar(4000),    –不带排序语句的sql语句
@page int,              –页码
@recsperpage int,       –每页容纳的记录数
@id varchar(255),       –需要排序的不重复的id号
@sort varchar(255) ,     –排序字段及规则
@pagecount int output          –总页数
)
as
begin
 declare @sql1 nvarchar(4000)
 set @sql1=nselect @pagecount=count(*)
  +n from +@tbname  
 exec sp_executesql @sql1,n@pagecount int output,@pagecount output
 set @pagecount=(@pagecount+@recsperpage-1)/@recsperpage
end
begin
declare @str nvarchar(4000)
set @str=select   top +cast(@recsperpage as varchar(20))+ * from (+@sql+) t where t.+@id+ not in (select   top +cast((@recsperpage*(@page-1)) as varchar(20))+ +@id+ from (+@sql+) t9 order by +@sort+) order by +@sort
–print @str
–exec sp_executesql @str
–exec @str
declare @str1 nvarchar(400)
declare @str2 nvarchar(400)
set @str1 = cast(@recsperpage as varchar(20))
set @str2 = cast((@recsperpage*(@page-1)) as varchar(20))
exec ( nselect   top +@str1+ n * from (+@sql+n) t where t.+@id+n not in (select   top +@str2+n +@id+n from (+@sql+n) t9 order by +@sort+n) order by +@sort )
end
go

3。程序代码:(index.aspx.cs文件)

using system;
using system.collections;
using system.componentmodel;
using system.data;
using system.drawing;
using system.web;
using system.web.sessionstate;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.htmlcontrols;
using system.data.sqlclient;

namespace joyes.test
{
 /// <summary>
 //————————————————–
 //–功能模块:存储过程分页
 //–说明:很简单
 //–编写人:黄治强
 //–编写时间:2005.9.5 
 //—————————————————
 /// </summary>
 public class index : system.web.ui.page
 {
  protected system.web.ui.webcontrols.datagrid dg;
  protected system.web.ui.webcontrols.label lblpaging;  
 
  private void page_load(object sender, system.eventargs e)
  {
   // 在此处放置用户代码以初始化页面
   if( !page.ispostback )
   {
    if(request.querystring[“page”] == null)
    {  
     //第一次开启页面时默认传递的页码参数为1
     databinddg2(1);
    }
    else
    {
     databinddg2(int.parse(request.querystring[“page”].tostring()));
    }
   }
  }  

  /// <summary>
  /// 利用存储过程取出数据并邦定到datagrid
  /// </summary>
  /// <param name=”intpage”>需要传递的翻页页码的get参数(int)</param>
  private void databinddg2(int intpage)
  {

   string str1 = ” select * from mobile “;//不带排序语句的sql语句   
   int intrecsperpage = 10;//每页容纳的记录数
   string strid = ” mobileid “;//需要排序的不重复的id号
   string strsort = ” mobileid “;//排序字段及规则
   string strtbname = “mobile”;//数据库当中的要提取数据的表
   
   
   sqlconnection con = new sqlconnection(“uid=sa;pwd=123456;database=test;”);   
   sqlcommand cmd = new sqlcommand(“proc_paging”,con);   
   cmd.commandtype = commandtype.storedprocedure;    

   cmd.parameters.add(new sqlparameter(“@sql”,sqldbtype.nvarchar,4000));
   cmd.parameters.add(new sqlparameter(“@page”,sqldbtype.int));
   cmd.parameters.add(new sqlparameter(“@recsperpage”,sqldbtype.int));
   cmd.parameters.add(new sqlparameter(“@id”,sqldbtype.nvarchar,255));
   cmd.parameters.add(new sqlparameter(“@sort”,sqldbtype.nvarchar,255));
   cmd.parameters.add(new sqlparameter(“@tbname”,sqldbtype.nvarchar,255));

   sqlparameter parameterpagecount = new sqlparameter(“@pagecount”,sqldbtype.int);
   parameterpagecount.direction = parameterdirection.output;
   cmd.parameters.add(parameterpagecount);

   cmd.parameters[“@sql”].value = str1;
   cmd.parameters[“@page”].value = intpage;
   cmd.parameters[“@recsperpage”].value = intrecsperpage;
   cmd.parameters[“@id”].value = strid;
   cmd.parameters[“@sort”].value = strsort;
   cmd.parameters[“@tbname”].value = strtbname;   
   
   try
   {    
    using(sqldataadapter ad = new sqldataadapter(cmd))
    {    
     dataset ds = new dataset();
     ad.fill(ds);
     dg.datasource = ds.tables[0].defaultview;
     dg.databind();    
    }
   }
   catch(exception error)
   {
    string strerror = error.tostring();
   }
   finally
   {
    if( con != null || con.state == connectionstate.open )
    {      
     con.close();
    }
   }  
   
   lblpaging.text = getlblpagingbind(request.querystring[“page”],parameterpagecount.value.tostring());
  } 

  /// <summary>
  /// 返回分页工具栏html编码
  /// </summary>
  /// <param name=”strparameter”>需要传递的翻页页码的get参数(string)</param>
  /// <param name=”strpagecount”>表的总页数(string)</param>
  /// <returns>strpagebar</returns>
  public string getlblpagingbind(string strparameter,string strpagecount)
  {
   string strpage = string.empty;
   
   if( strparameter == null )
   { strpage = “1”; }
   else
   { strpage = strparameter;  }
   
   
   //设置页码
   string strpagebar=””;   
   if (dg.allowpaging.tostring()  == “false” )
   {
    strpagebar+=”<nobr>\n”;
    strpagebar+=”[当前页]:”+(int.parse(strpage)).tostring()+”/”+strpagecount+”&nbsp;\n”;
   
    if (strpage == “1”)
    {
     strpagebar+=”<a disabled=disabled>[第一页]</a>&nbsp;\n”;
     strpagebar+=”<a disabled=disabled>[上一页]</a>&nbsp;\n”;
    }
    else
    {
     strpagebar+=”<a href=\”?”+strparameter+”&page=1\”>[第一页]</a>&nbsp;\n”;
     strpagebar+=”<a href=\”?”+strparameter+”&page=”+(int.parse(strpage)-1).tostring()+”\”>[上一页]</a>&nbsp;\n”;
    }

    if (strpage == strpagecount)
    {
     strpagebar+=”<a disabled=disabled>[下一页]</a>&nbsp;\n”;
     strpagebar+=”<a disabled=disabled>[最后一页]</a>&nbsp;\n”;
    }
    else
    {
     strpagebar+=”<a href=\”?”+strparameter+”&page=”+(int.parse(strpage)+1).tostring()+”\”>[下一页]</a>&nbsp;\n”;
     strpagebar+=”<a href=\”?”+strparameter+”&page=”+strpagecount+”\”>[最后一页]</a>&nbsp;\n”;
    }
    strpagebar+=@”<script language=javascript>function goto(page){if(!/^\d+$/.test(page))alert(页码格式不正确); else this.location=?&page=+page;}</script>”;
    strpagebar+=”<a href=\”javascript:goto(document.getelementbyid(tboxpage).value)\” id=linkgoto>[跳转到第]</a>\n”;
    strpagebar+=”<input class=input id=tboxpage type=text size=3 onkeydown=javascript:if(event.keycode==13){goto(this.value);return false;}>\n”;
    strpagebar+=”[页]\n”;
    strpagebar+=”</nobr>”;
   }
   return strpagebar;
  }
  
  #region web 窗体设计器生成的代码
  override protected void oninit(eventargs e)
  {
   //
   // codegen: 该调用是 asp.net web 窗体设计器所必需的。
   //
   initializecomponent();
   base.oninit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 – 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void initializecomponent()
  {   
   this.load += new system.eventhandler(this.page_load);

  }
  #endregion
 }
}

4。web页面代码(index.aspx)

<%@ page language=”c#” codebehind=”index.aspx.cs” autoeventwireup=”false” inherits=”joyes.test.index” %>
<!doctype html public “-//w3c//dtd html 4.0 transitional//en” >
<html>
 <head>
  <title>webform1</title>
  <meta content=”microsoft visual studio .net 7.1″ name=”generator”>
  <meta content=”c#” name=”code_language”>
  <meta content=”javascript” name=”vs_defaultclientscript”>
  <meta content=”http://schemas.microsoft.com/intellisense/ie5″ name=”vs_targetschema”>
 </head>
 <body ms_positioning=”gridlayout”>
  <form id=”form1″ method=”post” runat=”server”>
   <font face=”宋体”>
    <asp:datagrid id=”dg” style=”z-index: 102; left: 40px; position: absolute; top: 40px” runat=”server”
     autogeneratecolumns=”false” height=”96px”>
     <columns>
      <asp:boundcolumn datafield=”mobiletype” headertext=”手机类型”></asp:boundcolumn>
      <asp:boundcolumn datafield=”mobileid” headertext=”铃声名字”></asp:boundcolumn>
      <asp:boundcolumn datafield=”mobileid” headertext=”mobileid”></asp:boundcolumn>
     </columns>
     <pagerstyle mode=”numericpages”></pagerstyle>
    </asp:datagrid><asp:label id=”lblpaging” style=”z-index: 103; left: 48px; position: absolute; top: 368px”
     runat=”server”></asp:label></font></form>
 </body>
</html>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一个简单的存储过程数据分页-ASP教程,数据库相关
分享到: 更多 (0)