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

1、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 >


2、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


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值