用过webdiyer的aspnetpager的进来看看.

vfan2010 2007-04-17 03:41:51
我的Repeater分页要有查询条件,但是在每页的获取记录条数的那一个部分没有这个查询条件的设置啊.这样的话,获取的记录总数是数据表中所有的记录,请问如何达到有查询条件时也可以正确的获取到记录数呢?
...全文
358 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vfan2010 2007-04-19
  • 打赏
  • 举报
回复
不用aspnetpager了.结贴.
Aricc 2007-04-18
  • 打赏
  • 举报
回复
AspNetPager也不一定要使用存储啊。
chenou851123 2007-04-18
  • 打赏
  • 举报
回复
AspNetPager 不是要结合存储过程一起的吗 你在存储过程里面设置参数
lican990602 2007-04-18
  • 打赏
  • 举报
回复
这是邹健的分页存储过程
CREATE PROCEDURE dbo.usp_page
@tblName varchar(255), -- 表名
@strGetFields varchar(1000), -- 需要返回的列
@fldName varchar(255), -- 排序的字段名
@PageSize int , -- 页尺寸
@PageIndex int , -- 页码
@doCount bit , -- 返回记录总数, 非 0 值则返回
@OrderType bit , -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(5000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @doCount != 0
begin
if @strWhere !=''
set @strSQL = 'select count(id) as Total from '+@tblName+' where '+@strWhere
else
set @strSQL = 'select count(id) as Total from '+@tblName
end
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
else
begin
if @OrderType!= 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by '+@fldName+' desc'
--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by '+ @fldName+' asc'
end
if @PageIndex = 1
begin
if @strWhere != ''
set @strSQL = 'select top '+ str(@PageSize) +' '+@strGetFields+' from '+@tblName+ ' where '+@strWhere+' '+@strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+' from '+@tblName+' '+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end

else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = 'select top '+str(@PageSize)+' '+@strGetFields+' from '
+@tblName+' where '+@fldName+' '+@strTmp+'('+@fldName+') from(select top '+str((@PageIndex-1)*@PageSize)+' '+@fldName+' from '+@tblName+' '+@strOrder+') as tblTmp)'+@strOrder
if @strWhere!= ''
set @strSQL = 'select top '+str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where '+@fldName+ ' '+@strTmp+ '('
+ @fldName + ') from (select top '+str((@PageIndex-1)*@PageSize)+ ' '
+ @fldName + ' from '+@tblName +' where '+@strWhere+' '
+ @strOrder + ') as tblTmp) and '+@strWhere+ ' ' +@strOrder
end
end
exec (@strSQL)
vfan2010 2007-04-17
  • 打赏
  • 举报
回复
这样翻页后查询的一些参数还是丢失了啊。如果点击第二页,相当于又是获取所有的记录条数和所有的记录。
lican990602 2007-04-17
  • 打赏
  • 举报
回复
AspNetPager
vfan2010 2007-04-17
  • 打赏
  • 举报
回复
ControlName是什么?
AspNetPager对象还是我的Repeater什么的.
lican990602 2007-04-17
  • 打赏
  • 举报
回复
设置CustomInfoText
ControlName.CustomInfoText="记录总数:<font color=\"red\"><b>"+ControlName.RecordCount.ToString()+"</b></font>";
ControlName.CustomInfoText+=" 总页数:<font color=\"red\"><b>"+ControlName.PageCount.ToString()+"</b></font>";
ControlName.CustomInfoText+=" 当前页:<font color=\"red\"><b>"+ControlName.CurrentPageIndex.ToString()+"</b></font>";
vfan2010 2007-04-17
  • 打赏
  • 举报
回复
UP.
  • 打赏
  • 举报
回复
没用过
这个分页控件,修改连接字符串,和SQL语句,就可以了。 剩下的直接粘贴进去。就行。 强大的各种属性,附带多种CSS,想怎么分就怎么分页! 拖入工具箱后实现 1.2.3步(你修改下连接符,表就可以了) 控件.aspx页面 复制粘贴到前台页面适当位置即可 <webdiyer:AspNetPager ID="Pager1" runat="server" pagesize="9" CssClass="anpager" onpagechanged="AspNetPager1_PageChanged" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" ShowPageIndexBox="Never">webdiyer:AspNetPager> 控件.cs页面,后台页面 只需3步 设置连接字符串 string connstring = "Data Source=.;Initial Catalog=数据库名;User ID=用户名;Password=密码"; 程序页面内容:复制粘贴修改几个 //首页加载-1 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { SqlConnection conn = null; try { conn = new SqlConnection(connstring); conn.Open(); SqlCommand Count = new SqlCommand(); Count.Connection = conn; //修改你们查询的表 Count.CommandText = "select count(*) from products"; //查询 Pager1.RecordCount = (int)Count.ExecuteScalar(); //Pager1为分页控件ID BindData(); } finally { conn.Close(); } } } //绑定数据-2 public void BindData() { SqlConnection conn = new SqlConnection(connstring); string sql = "select * from products";//修改你们的查询语句: //select top查询语句 SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); da.Fill(ds, Pager1.PageSize * (Pager1.CurrentPageIndex - 1), Pager1.PageSize, "temptbl"); DataTable dt = ds.Tables["temptbl"]; DataList1.DataSource = dt; DataList1.DataBind(); } //控件事件-每次重新绑定 protected void AspNetPager1_PageChanged(object src, EventArgs e) { BindData(); }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧