repeater分页之数据源为List实例,求助

w87875251l 2010-11-11 02:14:44
创建了个类Test,里面有个方法,
public IList<Model> GetList()
{
IList<Model> list = new List<Model>();
Model model;
...
SqlDataAdapter ad = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
ad.Fill(ds);
.......

return list;}

然后.aspx.cs里面 Page_load( Repeater1.DataSource = test.GetList();
Repeater1.DataBind();)
现在要进行分页,怎么办?

“PagedDataSource类有一个可以赋给任何枚举类型对象的DataSource属性”这句话什么意思
...全文
140 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
若-相惜 2010-11-11
  • 打赏
  • 举报
回复
泛型的 。。。。。。。。。。。

/// <summary>
/// 根据当前页码,每页条数,取得相应数据。
/// </summary>
/// <param name="pageNum">每页显示条数</param>
/// <param name="currentPage">当前页码</param>
/// <returns></returns>
public static List<Message> getPagesData(int pageNum, int currentPage)
{
List<Message> list = new List<Message>();
StringBuilder sb = new StringBuilder();
sb.Append("select top " + pageNum + " * from zjagzm.message where ");
sb.Append("ID not in (select top " + pageNum * currentPage + " ID from zjagzm.message) order by uptime desc");
DataTable dt = DbHelperSQL.GetDataSet(sb.ToString(), null);
foreach (DataRow row in dt.Rows)
{
Message ms = new Message();
ms.id = Convert.ToInt32(row["id"]);
ms.name = row["name"].ToString();
ms.Title = row["title"].ToString();
ms.uptime = Convert.ToDateTime(row["uptime"]);
ms.contents = row["contents"].ToString();
list.Add(ms);
}
return list;

}
whatpn 2010-11-11
  • 打赏
  • 举报
回复
他要泛型的呀. 大家再看看了
若-相惜 2010-11-11
  • 打赏
  • 举报
回复


下载AspNetPager

/// <summary>
/// 取得总数
/// </summary>
/// <returns></returns>
public string getTotal()
{
StringBuilder sb = new StringBuilder();
sb.Append("select count(*) total from Test");
DataTable dt = DBHelper.ExecuteDt(sb.ToString());
return dt.Rows[0][0].ToString();
}
/// <summary>
/// 根据当前页码,每页条数,取得相应数据。
/// </summary>
/// <param name="pageNum">每页显示条数</param>
/// <param name="currentPage">当前页码</param>
/// <returns></returns>
public DataTable getPagesData(int pageNum, int currentPage)
{
StringBuilder sb = new StringBuilder();
sb.Append("select top " + pageNum + " * from Test where ");
sb.Append("ID not in (select top " + pageNum * currentPage + " ID from Test)");
return DBHelper.ExecuteDt(sb.ToString());
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="sqlPager_Default" %>
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>不用存储过程的分页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:gridview ID="gvSql" runat="server">
</asp:gridview>
</div>
<div>
<webdiyer:aspnetpager ID="AspNetPager1" runat="server" OnPageChanged="AspNetPager1_PageChanged" PageSize="3">
</webdiyer:aspnetpager>
</div>
</form>
</body>
</html>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class sqlPager_Default : System.Web.UI.Page
{
BLL.Test test = new BLL.Test();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AspNetPager1.RecordCount = Convert.ToInt32(test.getTotal());//此属性保存总记录数..
Bind();
}
}
private void Bind()
{
this.gvSql.DataSource = test.getPagesData(Convert.ToInt32(AspNetPager1.PageSize), AspNetPager1.CurrentPageIndex - 1);
this.gvSql.DataBind();
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
Bind();
}
}

gongjie416 2010-11-11
  • 打赏
  • 举报
回复
6楼很详细了
flyerwing 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]
使用分页控件 如aspnetpager
[/Quote]
手写分页
GetPageList(int PageIndex,int PageSize)
tuoshanwu 2010-11-11
  • 打赏
  • 举报
回复
pds.AllowPaging = true;

pds.PageSize = 15;

Total.Text = pds.Count.ToString();

pds.CurrentPageIndex = Convert.ToInt32(this.labPage.Text) - 1;

Repeater2.DataSource = pds;

LabCountPage.Text = pds.PageCount.ToString();

labPage.Text = (pds.CurrentPageIndex + 1).ToString();

this.lbtnpritPage.Enabled = true;

this.lbtnFirstPage.Enabled = true;

this.lbtnNextPage.Enabled = true;

this.lbtnDownPage.Enabled = true;

if (pds.CurrentPageIndex < 1)
{
this.lbtnpritPage.Enabled = false;

this.lbtnFirstPage.Enabled = false;
}

if (pds.CurrentPageIndex == pds.PageCount - 1)
{
this.lbtnNextPage.Enabled = false;

this.lbtnDownPage.Enabled = false;
}

Repeater2.DataBind();
}

protected void lbtnpritPage_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) - 1);
this.contrlRepeater();
}
protected void lbtnFirstPage_Click(object sender, EventArgs e)
{
this.labPage.Text = "1";
this.contrlRepeater();
}
protected void lbtnDownPage_Click(object sender, EventArgs e)
{
this.labPage.Text = this.LabCountPage.Text;
this.contrlRepeater();
}

protected void lbtnNextPage_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) + 1);
this.contrlRepeater();
}
把pds换成你的repeater1
w87875251l 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 myhid 的回复:]
PagedDataSource支持List
[/Quote]
支持?我试试
myhid 2010-11-11
  • 打赏
  • 举报
回复
PagedDataSource支持List
q107770540 2010-11-11
  • 打赏
  • 举报
回复
使用分页控件 如aspnetpager
IHandler 2010-11-11
  • 打赏
  • 举报
回复
使用GridView自动分页
IHandler 2010-11-11
  • 打赏
  • 举报
回复
数据查询时分页查询

62,271

社区成员

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

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

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

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