博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GridView实战二:使用ObjectDataSource数据源控件(自定义缓存机制实现Sort)
阅读量:6439 次
发布时间:2019-06-23

本文共 2952 字,大约阅读时间需要 9 分钟。

  参考资料:

 因为使用ObjectDataSource自带的缓存机制无法实现排序功能,苦苦寻觅终于找到了解决方案。参考后觉得还是自己实操一下比较安心,下面是对《GridView实战二:使用ObjectDataSource数据源控件》的改进!!

  CL代码:

public class CL{    private OdsDataManager om = new OdsDataManager();    private static string[] mainKey = {"ods"};    public CL()    {    }    public DataTable GetRecord(int maximumRows, int startRowIndex, string sortExpression)    {        DataTable dt = HttpRuntime.Cache[GetCacheKey(Convert.ToString(maximumRows) + startRowIndex)] as DataTable;        if (dt == null)        {            dt = om.GetRecord(maximumRows, startRowIndex, sortExpression);            AddCache(Convert.ToString(maximumRows) + startRowIndex, dt);        }        if (!string.IsNullOrEmpty(sortExpression))        {            DataTable tempDt = dt.Clone();            DataRow[] drs = dt.Select("",sortExpression);            foreach (DataRow dr in drs)            {                tempDt.Rows.Add(dr.ItemArray);            }            dt = tempDt;        }        return dt;    }    public int GetRecordCount()    {        return om.GetRecordCount();    }    public bool UpdateRecord(int ID, string Name, string Sex, string Country, string Hobby)    {        RemoveCache();        return om.UpdateRecord(ID,Name,Sex,Country,Hobby);    }    public bool DelRecord(int ID)    {        RemoveCache();        return om.DelRecord(ID);    }    public DataTable GetCountry()    {        DataTable countryDt = HttpRuntime.Cache["countryDt"] as DataTable;        return countryDt;    }    public DataTable GetHobby()    {        DataTable hobbyDt = HttpRuntime.Cache["hobbyDt"] as DataTable;        return hobbyDt;    }    private void AddCache(string key, object data)    {        System.Web.Caching.Cache dc = HttpRuntime.Cache;        if (dc[mainKey[0]] == null)            dc.Insert(mainKey[0], DateTime.Now);        System.Web.Caching.CacheDependency cd = new System.Web.Caching.CacheDependency(null, mainKey);        dc.Insert(GetCacheKey(key), data, cd, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);    }    private void RemoveCache()    {        System.Web.Caching.Cache dc = HttpRuntime.Cache;        if (dc[mainKey[0]] != null)            dc[mainKey[0]] = DateTime.Now;    }    private string GetCacheKey(string key)    {        return mainKey[0] + "-" + key;    }}

 

实现预加载(proactive loading)

Global.asax

void Application_Start(object sender, EventArgs e)     {        // 在应用程序启动时运行的代码        OdsDataManager om = new OdsDataManager();        HttpRuntime.Cache.Insert("countryDt", om.GetCountry(), null,            System.Web.Caching.Cache.NoAbsoluteExpiration,            System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null);        HttpRuntime.Cache.Insert("hobbyDt", om.GetHobby(), null,            System.Web.Caching.Cache.NoAbsoluteExpiration,            System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null);        om = null;    }

转载地址:http://uiuwo.baihongyu.com/

你可能感兴趣的文章
逆向project实战--Acid burn
查看>>
Apache Solr-6.0.1 (OpenLogic CentOS 7.2)
查看>>
java中List和Array相互转换
查看>>
目前支持WebGL的浏览器有哪些?
查看>>
ARKit从入门到精通(1)-ARKit初体验
查看>>
debug
查看>>
配置文件git config介绍
查看>>
IIS7的应用程序池详细解析
查看>>
java类路径classpath和包
查看>>
Information Retrieval 倒排索引 学习笔记
查看>>
【Git】Git-add之后-忽略部分文件的方法
查看>>
JQuery使用trigger模拟触发selete的选择change事件
查看>>
连表更新数据
查看>>
tensorflow笔记1:基础函数、embedding_lookup
查看>>
如何用phpmyadmin导入大容量.sql文件,直接使用cmd命令进行导入
查看>>
BZOJ4133 : Answer的排队
查看>>
基于Centos搭建 Mono 开发环境
查看>>
算法题:福尔摩斯的约会
查看>>
Oralce sql (+) 补充
查看>>
hdu 2665 划分树
查看>>