动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   .Net → 阅读文章

 ASP.NET结合存储过程写的通用搜索分页程序

作者来源: 
阅读 2085 人次 , 2006-3-29 4:33:00 

存储过程改自bigeagle的论坛分页程序。请大家批判!:)
select.aspx

--------------------------------------------------------------------------------

<%@ page language="c#" %>
<%@ import namespace="system.data" %>
<%@ import namespace="system.data.sqlclient" %>
<script runat="server">

  protected void page_load(object sender, eventargs e)
{
int intpageno,intpagesize,intpagecount;
intpagesize = 25;
if (request["currentpage"]==null)
{
intpageno = 1;
}
else
{
intpageno = int32.parse(request["currentpage"]);
}


sqlconnection mysqlconnection = new sqlconnection("server=(local);database=test;user id=sa;password=");
sqlcommand mysqlcommand = new sqlcommand("up_gettopiclist", mysqlconnection);
mysqlcommand.commandtype = commandtype.storedprocedure;

sqlparameter workparm;

//搜索表字段,以","号分隔
workparm = mysqlcommand.parameters.add("@a_tablelist", sqldbtype.varchar, 200);
mysqlcommand.parameters["@a_tablelist"].value = "offerid,type,offertime";

//搜索表名
workparm = mysqlcommand.parameters.add("@a_tablename", sqldbtype.varchar, 30);
mysqlcommand.parameters["@a_tablename"].value = "offer";

//搜索条件,如"select * from aa where a=1 and b=2 and c=3"则条件为"where a=1 and b=2 and c=3"
workparm = mysqlcommand.parameters.add("@a_selectwhere", sqldbtype.varchar, 500);
mysqlcommand.parameters["@a_selectwhere"].value = "where type='idl'";

//表主键字段名,必须为int类型
workparm = mysqlcommand.parameters.add("@a_selectorderid", sqldbtype.varchar, 50);
mysqlcommand.parameters["@a_selectorderid"].value = "offerid";

//排序,可以使用多字段排序但主键字段必需在最前面
workparm = mysqlcommand.parameters.add("@a_selectorder", sqldbtype.varchar, 50);
mysqlcommand.parameters["@a_selectorder"].value = "order by offerid desc";

//页号
workparm = mysqlcommand.parameters.add("@a_intpageno", sqldbtype.int);
mysqlcommand.parameters["@a_intpageno"].value = intpageno;

//每页显示数
workparm = mysqlcommand.parameters.add("@a_intpagesize", sqldbtype.int);
mysqlcommand.parameters["@a_intpagesize"].value = intpagesize;

//总记录数(存储过程输出参数)
workparm = mysqlcommand.parameters.add("@recordcount", sqldbtype.int);
workparm.direction = parameterdirection.output;

//当前页记录数(存储过程返回值)
workparm = mysqlcommand.parameters.add("rowcount", sqldbtype.int);
workparm.direction = parameterdirection.returnvalue;

mysqlconnection.open();
repeater.datasource = mysqlcommand.executereader();

repeater.databind();

mysqlconnection.close();

int32 recordcount = (int32)mysqlcommand.parameters["@recordcount"].value;
int32 rowcount = (int32)mysqlcommand.parameters["rowcount"].value;

labelrecord.text = recordcount.tostring();
labelrow.text = intpageno.tostring();
intpagecount = recordcount/intpagesize;
if ((recordcount%intpagesize)>0)
intpagecount += 1;
labelpage.text = intpagecount.tostring();

if (intpageno>1)
{
hlfistpage.navigateurl = "select.aspx?currentpage=1";
hlprevpage.navigateurl = string.concat("select.aspx?currentpage=","",intpageno-1);
}
else
{
hlfistpage.navigateurl = "";
hlprevpage.navigateurl = "";
//hlfistpage.enabled = false;
//hlprevpage.enabled = false;
}

if (intpageno<intpagecount)
{
hlnextpage.navigateurl = string.concat("select.aspx?currentpage=","",intpageno+1);
hlendpage.navigateurl = string.concat("select.aspx?currentpage=","",intpagecount);
}
else
{
hlnextpage.navigateurl = "";
hlendpage.navigateurl = "";
//hlnextpage.enabled=false;
//hlendpage.enabled=false;
}

}

</script>
<html>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<head>
  <link href="/style.css" rel="stylesheet" />
<style type="text/css">
.high {  font-family: "宋体"; font-size: 9pt; line-height: 140%}
.mid {  font-size: 9pt; line-height: 12pt}
.small {  font-size: 9pt; line-height: normal}
.tp10_5 {
  font-size: 14px;
  line-height: 140%;
}
</style>
  <style type="text/css">a:link {
  color: #cc6666
}
</style>
</head>
<body>
  <form runat="server">
<span class="high">   第<font color="#cc0000"><asp:label id="labelrow" runat="server"/></font>页 | 共有<asp:label id="labelpage" runat="server"/>页
  | <asp:label id="labelrecord" runat="server"/>条信息 |
  <asp:hyperlink id="hlfistpage" text="首页" runat="server"/>
  | <asp:hyperlink id="hlprevpage" text="上一页" runat="server"/>
  | <asp:hyperlink id="hlnextpage" text="下一页" runat="server"/>
  | <asp:hyperlink id="hlendpage" text="尾页" runat="server"/></span><br>
 
  <asp:repeater id=repeater runat="server">

  <headertemplate>

  <table width="583" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td bgcolor="#000000"><table width="100%" border="0" cellpadding="4" cellspacing="1" class="tp10_5">
  <tr bgcolor="#999999">
  <td align="center"> <strong><font color="#ffffff">订单号</font></strong></td>
  <td align="center"> <strong><font color="#ffffff">服务项目</font></strong></td>
  <td align="center"> <strong><font color="#ffffff">预订日期</font></strong></td>
  <td align="center"> <strong><font color="#ffffff">操作人员</font></strong></td>
  <td align="center"> <strong><font color="#ffffff">分配状态</font></strong></td>
  <td> <div align="center"></div></td>
  </tr>
  </headertemplate>

  <itemtemplate>

  <tr align="center" bgcolor="#ffffff" class="small" onmouseover='this.style.background="#cccccc"' onmouseout='this.style.background="#ffffff"'>
  <td><%# databinder.eval(container.dataitem, "offerid") %></td>
  <td><%# databinder.eval(container.dataitem, "type") %></td>
  <td><%# databinder.eval(container.dataitem, "offertime") %></td>
  <td> </td>
  <td> </td>
  <td><a href="javascript:void(window.open('info.asp?id=<%# databinder.eval(container.dataitem, "offerid") %>','订单分配','height=600,width=1000'))">订单详情</a></td>
  </tr>

  </itemtemplate>

  <footertemplate>

  </table></td>
  </tr>
  </table>

  </footertemplate>

  </asp:repeater>

  </form>
</body>
</html>

--------------------------------------------------------------------------------


up_gettopiclist.sql

--------------------------------------------------------------------------------

create proc up_gettopiclist
@a_tablelist varchar(200),
@a_tablename varchar(30),
@a_selectwhere varchar(500),
@a_selectorderid varchar(20),
@a_selectorder varchar(50),
@a_intpageno int,
@a_intpagesize int,
@recordcount int output
as
/*定义局部变量*/
declare @intbeginid int
declare @intendid int
declare @introotrecordcount int
declare @introwcount   int
declare @tmpselect   nvarchar(600)
/*关闭计数*/
set nocount on

/*求总共根贴数*/

select @tmpselect = 'set nocount on;select @spintrootrecordcount = count(*) from '+@a_tablename+' '+@a_selectwhere
execute sp_executesql
@tmpselect,
n'@spintrootrecordcount int output',
@spintrootrecordcount=@introotrecordcount output

select @recordcount = @introotrecordcount

if (@introotrecordcount = 0)   --如果没有贴子,则返回零
return 0

/*判断页数是否正确*/
if (@a_intpageno - 1) * @a_intpagesize > @introotrecordcount
  return (-1)

/*求开始rootid*/
set @introwcount = (@a_intpageno - 1) * @a_intpagesize + 1
/*限制条数*/

select @tmpselect = 'set nocount on;set rowcount @spintrowcount;select @spintbeginid = '+@a_selectorderid+' from '+@a_tablename+' '+@a_selectwhere+' '+@a_selectorder
execute sp_executesql
@tmpselect,
n'@spintrowcount int,@spintbeginid int output',
@spintrowcount=@introwcount,@spintbeginid=@intbeginid output


/*结束rootid*/
set @introwcount = @a_intpageno * @a_intpagesize
/*限制条数*/

select @tmpselect = 'set nocount on;set rowcount @spintrowcount;select @spintendid = '+@a_selectorderid+' from '+@a_tablename+' '+@a_selectwhere+' '+@a_selectorder
execute sp_executesql
@tmpselect,
n'@spintrowcount int,@spintendid int output',
@spintrowcount=@introwcount,@spintendid=@intendid output


if @a_selectwhere='' or @a_selectwhere is null
select @tmpselect = 'set nocount off;set rowcount 0;select '+@a_tablelist+' from '+@a_tablename+' where '+@a_selectorderid+' between '
else
select @tmpselect = 'set nocount off;set rowcount 0;select '+@a_tablelist+' from '+@a_tablename+' '+@a_selectwhere+' and '+@a_selectorderid+' between '

if @intendid > @intbeginid
select @tmpselect = @tmpselect+'@spintbeginid and @spintendid'+' '+@a_selectorder
else
select @tmpselect = @tmpselect+'@spintendid and @spintbeginid'+' '+@a_selectorder

execute sp_executesql
@tmpselect,
n'@spintendid int,@spintbeginid int',
@spintendid=@intendid,@spintbeginid=@intbeginid

return(@@rowcount)
--select @@rowcount
go


 本文Tags存储过程  分页  C#  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:DotNet语音技术实现
· 下一篇:用ASP.NET实现一个简单的计算器
· 通过事例学习.net的WebForms技术(三)
· asp.net 关于form认证的一般设置
· Microsoft .NET 框架常见问题(一)
· 显示指定的错误页面,同时把错误信息写入系统日志文件
· Web 控件--Web 控件简介


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077