存储过程:

-- =============================================
-- Author:
-- Create date:
-- Description: 分页
--Update Date:
--增加了默认排序规则,根据主键升序(防止在视图查询中乱号)
-- =============================================
ALTER PROCEDURE [dbo].[getdatabyPageIndex]
@tablename nvarchar(200),
@columns nvarchar(500)='*',
@condition nvarchar(200)='',
@pagesize int=10,
@pageindex int=0,
@pk nvarchar(30),
@total int output, --统计总共的条数
@orderculumn nvarchar(50)=@pk,
@isasc nvarchar(10)='desc' AS
BEGIN
DECLARE @sql nvarchar(2000)
SET @sql='select top '+cast(@pagesize AS nvarchar(10))+' '+@columns+' from '+@tablename+' where '+
@pk+' not in (select top '+cast((@pagesize*@pageindex) AS nvarchar(10))+
' '+@pk+' from '+@tablename +' where 1=1 '+@condition+' order by '+@orderculumn+' '+@isasc+')'+@condition +' order by '+@orderculumn+' '+@isasc
PRINT @sql
EXEC(@sql)
DECLARE @sql2 nvarchar(2000)
SET @sql2='SELECT @total1 = count(*) FROM '+ @tablename+' WHERE 1=1 '+ @condition
EXEC sp_executesql @sql2,N'@total1 int output',@total output END

.cs:

      /// <summary>
/// 分页功能
/// </summary>
/// <param name="tablename">表名</param>
/// <param name="columns">列名</param>
/// <param name="condition">条件,不需要带where</param>
/// <param name="pagesize">每页显示条数</param>
/// <param name="pageindex">页码</param>
/// <param name="pk">主键</param>
/// <returns>DataTable</returns>
public DataTable getdatabyPageIndex(string tablename, string columns, string condition, int pagesize, int pageindex, string pk,out int totalcount,string ordercolumn,string isasc)
{
string order = "";
if (ordercolumn == null)
{
order = pk;
} string asc = "";
if (isasc == null)
{
isasc = "desc";
} SqlParameter[] pars = new SqlParameter[]{
new SqlParameter("@tablename",tablename),
new SqlParameter("@columns",columns),
new SqlParameter("@condition",condition),
new SqlParameter("@pagesize",pagesize),
new SqlParameter("@pageindex",pageindex),
new SqlParameter("@pk",pk),
new SqlParameter("@total",SqlDbType.Int),
new SqlParameter("@orderculumn",ordercolumn),
new SqlParameter("@isasc",isasc)
};
pars[].Direction = ParameterDirection.Output;
DataTable dt= db.ExcuteSelectReturnDataTable("sp_getdatabyPageIndex", CommandType.StoredProcedure, pars);
totalcount= int.Parse(pars[].Value.ToString());
return dt;
} /// <summary>
/// 执行一个Select语句或者相应的存储过程实现返回数据集合DataSet
/// </summary>
/// <param name="SelectStr">执行一个Select语句或者相应的存储过程</param>
/// <param name="type">指定命令类型</param>
/// <param name="pars">相应参数集合</param>
/// <returns>DataSet</returns>
public DataSet ExcuteSelectReturnDataSet(string SelectStr, CommandType type, SqlParameter[] pars)
{
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(ConnString);
SqlDataAdapter sda = new SqlDataAdapter(SelectStr, conn);
if (pars != null && pars.Length > )
{
foreach (SqlParameter p in pars)
{
sda.SelectCommand.Parameters.Add(p);
}
}
sda.SelectCommand.CommandType = type;
sda.Fill(ds);
return ds;
}

.aspx:

    <style type="text/css">
.pages { color: #; width:%; height:25px;}
.pages a, .pages .cpb { text-decoration:none; padding: 5px; border: 1px solid #ddd; background: #ffff;margin: 2px; font-size:12px; color:#; height:20px}
.pages a:hover { background-color: #2F7EAE; color:#fff;border:1px solid #2F7EAE; text-decoration:none;}
.pages .cpb { font-weight: bold; color: #fff; background: #2F7EAE; border:1px solid #2F7EAE; height:20px}
</style> <asp:HiddenField ID="hidden" runat="server" Value=" " /> <asp:Repeater ID="rptProlist" runat="server" onitemdatabound="rptProlist_ItemDataBound">
<HeaderTemplate>
<table border="" class="infolist" cellpadding="" cellspacing="">
<thead>
<tr>
<th width="4%">序号</th>
<th>项目名称</th>
<th width="10%">开始日期</th>
<th width="10%">预计结束日期</th>
<th width="10%">项目状态</th>
<th width="7%">创建人</th>
<th width="7%">负责人</th>
<th width="20%">参与人</th>
<th style="border-right:1px solid #999999;" width="10%">实际结束日期</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("ProjectID") %></td>
<td><a href="projectdetails.aspx?id=<%#Eval("ProjectID") %>"><%#Eval("ProjectName") %></a></td>
<td><%#Eval("StartDate","{0:yyyy-MM-dd}")%></td>
<td><%#Eval("ExpectedEndDate","{0:yyyy-MM-dd}")%></td>
<td><%#Eval("ProjectState")%></td>
<td><%#returnUserRealName(Eval("ProjectCreater").ToString())%></td>
<td><%#returnUserRealName(Eval("ProjectPrincipal").ToString())%></td>
<td><asp:Label ID="lbPlayers" runat="server" Text='<%#Eval("ProjectPlayers") %>'></asp:Label></td>
<td style="border-right:1px solid #999999;">&nbsp;<%#Eval("EndDate","{0:yyyy-MM-dd}")%>&nbsp;</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater> <webdiyer:AspNetPager ID="AspNetPager1" runat="server" firstpagetext="首页" lastpagetext="尾页"
nextpagetext="下一页" numericbuttoncount=""
pageindexboxtype="DropDownList" prevpagetext="上一页"
showcustominfosection="Left" showpageindexbox="Always"
submitbuttontext="Go" textafterpageindexbox="页"
textbeforepageindexbox="转到" AlwaysShow="True" CustomInfoHTML="第%CurrentPageIndex%/%PageCount%页,每页%PageSize%条,共%RecordCount%条信息"
LayoutType="Table" CssClass="pages" CustomInfoClass="paginator" CurrentPageButtonClass="cpb"
Height="30px" CustomInfoSectionWidth="" Wrap="False"
OnPageChanging="AspNetPager1_PageChanging"
Width="660px" onpagechanged="AspNetPager1_PageChanged">
</webdiyer:AspNetPager>

.aspx.cs:

        //string condition = "  ";
//每页条数
int pagesize = ;
//总共条数
int recordCount = ;
//第几页
int pageindex = ; public void getProlist()
{
string condition = hidden.Value;
rptProlist.DataSource = new PM.BLL.tb_Project().getdatabyPageIndex("tb_Project", "*", condition, pagesize, pageindex, "ProjectID", out recordCount, null, null);
rptProlist.DataBind();
AspNetPager1.RecordCount = recordCount;
AspNetPager1.PageSize = pagesize;
} /// <summary>
/// 搜索
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSearch_Click(object sender, EventArgs e)
{
string proName = txtProName.Text.Trim();
string proState = ddlState.SelectedItem.Text;
int proPrincipal = Convert.ToInt32(ddlPrincipal.SelectedValue);
int proCreater = Convert.ToInt32(ddlCreater.SelectedValue);
string proNotes = txtNotes.Text; StringBuilder sb = new StringBuilder();
if (!string.IsNullOrEmpty(proName))
{
sb.Append(" and ProjectName like '%" + proName + "%'");
}
if (ddlState.SelectedValue != "-1")
{
sb.Append(" and ProjectState='" + proState + "'");
}
if (proPrincipal != -)
{
sb.Append(" and ProjectPrincipal='" + proPrincipal + "'");
}
if (proCreater != -)
{
sb.Append(" and ProjectCreater='" + proCreater + "'");
}
if (!string.IsNullOrEmpty(txtStartDate.Text.Trim()) && !string.IsNullOrEmpty(txtEndDate.Text.Trim()))
{
sb.Append(" and (StartDate >= '" + Convert.ToDateTime(txtStartDate.Text).ToString("yyyy-MM-dd") + "' and StartDate <= '" + Convert.ToDateTime(txtEndDate.Text).ToString("yyyy-MM-dd") + "')");
}
if (!string.IsNullOrEmpty(proNotes))
{
sb.Append(" and ProjectNotes like '%" + proNotes + "%' ");
}
hidden.Value = Convert.ToString(sb);
string condition = Convert.ToString(sb);
pageindex = ;
getProlist();
} protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
AspNetPager1.CurrentPageIndex = e.NewPageIndex;
getProlist();
} protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
pageindex = this.AspNetPager1.CurrentPageIndex - ;
getProlist();
}

把搜索条件存储在隐藏域中

ASP.NET分页存储过程,解决搜索时丢失条件信息的更多相关文章

  1. (转)asp.net分页存储过程

    Asp.Net分页存储过程 SQL分页语句 一.比较万能的分页: sql代码: 1 2 3 select top 每页显示的记录数 * from topic where id not in  (sel ...

  2. Asp.Net分页存储过程

      SQL分页语句 一.比较万能的分页: sql代码: 1 2 3 select top 每页显示的记录数 * from topic where id not in  (select top (当前的 ...

  3. PHP解决搜索时在URL地址栏输入中文字符搜索结果出现乱码

    这 个问题的出现的前提是本站代码采用utf-8格式,php空间当页面停留在搜索页面时,在浏览器的地址栏输入中文的关键字进行搜索时会出现乱码,在网上查找资料说 明,是因为浏览器默认将url中的中文字符编 ...

  4. 学习ASP.NET Core(08)-过滤搜索与分页排序

    上一篇我们介绍了AOP的基本概览,并使用动态代理的方式添加了服务日志:本章我们将介绍过滤与搜索.分页与排序并添加对应的功能 注:本章内容大多是基于solenovex的使用 ASP.NET Core 3 ...

  5. 1、SQL可搜索可排序可分页存储过程, 2、范围内的随机时间 适用于sql 2008以上

    -- ============================================= -- Author: 蜘蛛王 -- Create date: 2015-10-29 -- Descri ...

  6. asp.net利用存储过程分页代码

    -最通用的分页存储过程 -- 获取指定页的数据 CREATE PROCEDURE Pagination ), -- 表名 ) = '*', -- 需要返回的列 )='', -- 排序的字段名 , -- ...

  7. asp.net—执行分页存储过程的函数

    分页存储过程的T—SQL在之前的文章中已经跟大家分享过了 现在就对应 分页存储过程 跟大家分享下在.net中执行的函数. 该文章是希望给予新手一些编程过程中的帮助(大神可以帮忙指出代码中的不妥之处) ...

  8. 【配置】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。

      ×   检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 5 ...

  9. asp.net调用存储过程详解

    摘要 存储过程的调用在B/S系统中用的很多.传统的调用方法不仅速度慢,而且代码会随着存储过程的增多不断膨胀,难以维护.新的方法在一定程度上解决了这些问题. 关键词 ASP.NET:存储过程   在使用 ...

随机推荐

  1. C++实现一个限制对象实例个数的类

    http://www.cnblogs.com/absolute8511/archive/2009/03/02/1649603.html

  2. 使用AspNetPager与GridView完成分页

    使用AspNetPager与GridView完成分页   由于GridView的分页功能实在是太弱了,所以需要使用强大的AspNetPager来作为分页控件.最简单的办法就是GridView控件下面接 ...

  3. Java NIO原理及实例

    Java NIO是在jdk1.4开始使用的,它既可以说成“新I/O”,也可以说成非阻塞式I/O.下面是java NIO的工作原理: 1. 由一个专门的线程来处理所有的 IO 事件,并负责分发. 2. ...

  4. (转载)PHP获取客户端、PHP获取服务器相关信息

    (转载)http://www.php100.com/html/webkaifa/PHP/PHP/2009/1027/3446.html 服务器变量 $_SERVER 详解: 1.$_SESSION[' ...

  5. 解决Subclipse1.6在64位JDK下不可用的问题

    Failed to load JavaHL Library.  These are the errors that were encountered:   需要下载SVNKit Adapter Sub ...

  6. substring 在C#,Javascript,SQL 中index开始值

    substring函数index参数在三个平台的开始值: 平台 index参数开始值 C# 0 Javascript 0 SQL 1

  7. Fiddler基本用法以及如何对手机抓包

    一.Fiddler是什么? ·一种Web调试工具. ·可以记录所有客户端和服务器的http和https请求. ·允许监视.设置断点.修改输入输出数据. 官方文档(英文):http://docs.tel ...

  8. HW4.24

    public class Solution { public static void main(String[] args) { double sum = 0; for(int i = 1; i &l ...

  9. 2 weekend110的mapreduce介绍及wordcount + wordcount的编写和提交集群运行 + mr程序的本地运行模式

    把我们的简单运算逻辑,很方便地扩展到海量数据的场景下,分布式运算. Map作一些,数据的局部处理和打散工作. Reduce作一些,数据的汇总工作. 这是之前的,weekend110的hdfs输入流之源 ...

  10. 【转】tmux入门指南

    按照官方说明,tmux是一个终端复用软件.我接触tmux也就是这几天的事情,但已经发现其强大.作为一个文艺程序员,有必要向大家分享一下,这么好的东东怎敢藏着掖着. 先用起来再说 假设你已经装好tmux ...