化繁为简,最简易的SqlDataSource配合Cache使用~

最近一个小项目用了DevExpress控件,实践中DevExpress的控件确实很方便。

在用ASPxGridView控件的时候,为了偷懒结合了SqlDataSource使用,但一直在大数据列表上表现的不太理想

本着最简洁优化的角度,翻了翻SqlDataSource的Cache属性,结合到项目使用效果还不错

 

Gird代码就不贴了,贴下SqlDataSource的配置:

当然Cache还有其他的设置,比如设置缓存时间,和刷新策略,比如CacheExpirationPolicy=Sliding属性,可设置每次操作之后会重置缓存计数时间

这里主要使用的是CacheKeyDependency,用来和自动生成的缓存建立KEY依赖,更改了CacheKeyDependency的值就相当于重新建立了缓存~ 

想当于手动刷新了缓存,知道这点你想什么时候刷新缓存数据都可以了~

    <asp:SqlDataSource ID="DSMain" runat="server" ConnectionString="<%$ ConnectionStrings:OraConnStr %>" ProviderName="<%$ ConnectionStrings:OraConnStr.ProviderName %>"
        EnableCaching="true" CacheKeyDependency="MyCacheKey"/>

 

Dev重加载,为了提示用户体验,使用了异步Callback

复制代码
                <dx:ASPxButton ID="ASPxButton1" runat="server" Text="重新加载数据" AutoPostBack="false">
                    <ClientSideEvents Click="function validate(s, e) {   
                                var r=confirm('确定要重新加载数据吗?')
                                if (r!=true)      
                                   e.processOnServer = false;  
                                else
                                   ReloadCallback.PerformCallback();
                            }" />
                </dx:ASPxButton>
                <dx:ASPxCallback runat="server" ID="ReloadCallback" ClientInstanceName="ReloadCallback" OnCallback="ReloadCallback_OnCallback">
                    <ClientSideEvents CallbackComplete="function(s,e){ShowReloadResult(e);}"></ClientSideEvents>
                </dx:ASPxCallback>
复制代码
    protected void ReloadCallback_OnCallback(object source, CallbackEventArgs e)
    {
        Cache["MyCacheKey"] = DateTime.Now;

        e.Result = true.ToString();
    }
1
2
3
4
5
function ShowReloadResult(e) {
    if (e.result == "True")
        if (confirm('重新加载成功,需要自动刷新页面吗~') == true)
            window.location.reload();
}

 

posted @   leeolevis  阅读(528)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示