缓存中如何用aspnetpager进行分页

我这段代码实现的功能是用户查看过了的数据不再次显现

需要用到缓存,这里解决的问题是缓存中如何用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();
        }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值