zoukankan      html  css  js  c++  java
  • ASP.NET结合存储过程写的通用搜索分页程序

      存储过程改自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

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    编译原理随堂作业十-------消除左递归
    编译原理随堂作业九—DFA最小化,语法分析初步
    编译原理随堂作业八—非确定的自动机NFA确定化为DFA
    编译原理随堂作业七—正规式到正规文法与自动机
    编译原理随堂作业六—正规文法与正规式
    编译原理随堂作业五—词法分析程序的设计与实现
    编译原理随堂作业四—文法和语言知识梳理
    编译原理随堂作业三——语法树,短语,直接短语,句柄
    编译原理随堂作业二——文法和语言
    编译原理随堂作业一
  • 原文地址:https://www.cnblogs.com/Athrun/p/552086.html
Copyright © 2011-2022 走看看