您的位置:首页 > 编程语言 > ASP

缓存中如何用aspnetpager进行分页

2012-05-04 11:16 85 查看
我这段代码实现的功能是用户查看过了的数据不再次显现

需要用到缓存,这里解决的问题是缓存中如何用aspnetpager进行分页

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)//首次加载,更新缓存
{
//取出100条放入缓存
DataTable dt = SpaceBuilder.Common.SqlHelp.GetDateTable("select top 100 id,messagetitle,messagecontent,messagestate,messagetype,pubdate from MessageInfo where messagestate=0 order by pubdate desc");
//更新缓存
Cache.Remove("wokao");
Cache.Add("wokao", dt, null, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration, CacheItemPriority.High, null);
//放一个中间表用于缓存分页
DataTable dt2 = dt.Clone();
int pagesize = anp.PageSize;
if (dt.Rows.Count > anp.PageSize)//大于1页
{
for (int i = 0; i < pagesize; i++)
{
dt2.ImportRow(dt.Rows[i]);
string sql = "update MessageInfo set messagestate = 1 where id='" + dt.Rows[i]["id"].ToString() + "'";
SpaceBuilder.Common.SqlHelp.ExcuteCommand(sql);
}
}
else
{
dt2 = dt.Copy();
string sql = "update MessageInfo set messagestate = 1";
SpaceBuilder.Common.SqlHelp.ExcuteCommand(sql);
}
this.rptinfo.DataSource = dt2;
this.rptinfo.DataBind();
anp.RecordCount = dt.Rows.Count;
}

}

protected void anp_PageChanged(object sender, EventArgs e)
{
DataTable dt3 = (DataTable)Cache.Get("wokao");
DataTable dt4 = dt3.Clone();
int iPageSize = anp.PageSize;
int iPageIndex = anp.CurrentPageIndex;
if (dt3.Rows.Count > iPageSize * (iPageIndex))//如果新页够一整页
{
for (int i = iPageSize * (iPageIndex - 1); i < iPageSize * iPageIndex; i++)
{
string sql = "update MessageInfo set messagestate = 1 where id='" + dt3.Rows[i]["id"].ToString() + "'";
SpaceBuilder.Common.SqlHelp.ExcuteCommand(sql);
dt4.ImportRow(dt3.Rows[i]);
}
}
else {
for (int i = iPageSize * (iPageIndex - 1); i < dt3.Rows.Count; i++)
{
string sql = "update MessageInfo set messagestate = 1 where id='" + dt3.Rows[i]["id"].ToString() + "'";
SpaceBuilder.Common.SqlHelp.ExcuteCommand(sql);
dt4.ImportRow(dt3.Rows[i]);
}
}
this.rptinfo.DataSource = dt4;
this.rptinfo.DataBind();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: