ASP.NET分页存储过程,解决搜索时丢失条件信息
存储过程:
-- =============================================
-- 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;"> <%#Eval("EndDate","{0:yyyy-MM-dd}")%> </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分页存储过程,解决搜索时丢失条件信息的更多相关文章
- (转)asp.net分页存储过程
Asp.Net分页存储过程 SQL分页语句 一.比较万能的分页: sql代码: 1 2 3 select top 每页显示的记录数 * from topic where id not in (sel ...
- Asp.Net分页存储过程
SQL分页语句 一.比较万能的分页: sql代码: 1 2 3 select top 每页显示的记录数 * from topic where id not in (select top (当前的 ...
- PHP解决搜索时在URL地址栏输入中文字符搜索结果出现乱码
这 个问题的出现的前提是本站代码采用utf-8格式,php空间当页面停留在搜索页面时,在浏览器的地址栏输入中文的关键字进行搜索时会出现乱码,在网上查找资料说 明,是因为浏览器默认将url中的中文字符编 ...
- 学习ASP.NET Core(08)-过滤搜索与分页排序
上一篇我们介绍了AOP的基本概览,并使用动态代理的方式添加了服务日志:本章我们将介绍过滤与搜索.分页与排序并添加对应的功能 注:本章内容大多是基于solenovex的使用 ASP.NET Core 3 ...
- 1、SQL可搜索可排序可分页存储过程, 2、范围内的随机时间 适用于sql 2008以上
-- ============================================= -- Author: 蜘蛛王 -- Create date: 2015-10-29 -- Descri ...
- asp.net利用存储过程分页代码
-最通用的分页存储过程 -- 获取指定页的数据 CREATE PROCEDURE Pagination ), -- 表名 ) = '*', -- 需要返回的列 )='', -- 排序的字段名 , -- ...
- asp.net—执行分页存储过程的函数
分页存储过程的T—SQL在之前的文章中已经跟大家分享过了 现在就对应 分页存储过程 跟大家分享下在.net中执行的函数. 该文章是希望给予新手一些编程过程中的帮助(大神可以帮忙指出代码中的不妥之处) ...
- 【配置】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。
× 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 5 ...
- asp.net调用存储过程详解
摘要 存储过程的调用在B/S系统中用的很多.传统的调用方法不仅速度慢,而且代码会随着存储过程的增多不断膨胀,难以维护.新的方法在一定程度上解决了这些问题. 关键词 ASP.NET:存储过程 在使用 ...
随机推荐
- java向文件写数据的3种方式
下边列举出了三种向文件中写入数据的方式,当然还有其他方式,帮助自己理解文件写入类的继承关系.类的关系: file->fileoutputstream->outputstreamWriter ...
- [收藏转贴]struct探索·extern "C"含义探索 ·C++与C的混合编程·C 语言高效编程的几招
一.C/C++语言 struct深层探索 1.自然对界 struct是一种复合数据类型,其构成元素既可以是基本数据类型(如 int.long.float等)的变量,也可以是一些复合数据类型(如 arr ...
- PAIP.提升效率----论项目知识库的建设。。
PAIP.提升效率----论项目知识库的建设.. 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net ...
- java 常量池
在jvm规范中,每个类型都有自己的常量池.常量池是某类型所用常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型.字段.方法的符号引用.之所以是符号引用而不是像c语言那样,编译时直接 ...
- 【HDOJ】1969 Pie
二分. #include <stdio.h> #include <math.h> ; ]; int main() { int case_n, n, f, m; double r ...
- 深入详解SQL中的Null
深入详解SQL中的Null NULL 在计算机和编程世界中表示的是未知,不确定.虽然中文翻译为 “空”, 但此空(null)非彼空(empty). Null表示的是一种未知状态,未来状态,比如小明兜里 ...
- 用C++试着完成Python简明教程后面的练习
试图存取文件的部分无法完成.代码已提交到github.
- 数据表列名与数据库关键字冲突,在Hibernate下的解决办法
设计了一个数据库,某一个列名字是key,这与mysql数据库关键字冲突了,Hibernate下save总是报错. 在mysql命令中,解决办法很简单,只需要将关键字key用引号括起来就好了. 在Hib ...
- No setter found for property 'userDAO' in class 'com.ssh.service.impl.User1Service'
造成此问题的原因是: 在applicationContext.xml中引用 <bean id="userService" class="com.ssh.servic ...
- 【性能测试】【Jmeter】学习(3)——查看测试结果
监听器——聚合报告 聚合报告添加步骤:(右键点击每一个操作步骤--->“添 加”---->“监听器”---->“聚合报告”) Label:每个 JMeter 的 element(例如 ...