惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
月光博客
月光博客
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
雷峰网
雷峰网
博客园 - 叶小钗
量子位
IT之家
IT之家

博客园 - LanceZhang

【招聘】招高级.Net研发工程师(上海-普陀) 测试 应对.NET Reflector过期的小技巧 也谈谈“加班”问题 共享一个封装Silverlight的WebPart 【开源】二手火车票监控程序 抢票快手 V1.0发布 【开源】Winform甘特日程控件GanttPlanner V1.0发布 移除txt文本中不必要的换行符 在MOSS2007中开发并部署自定义WebService SQL Server 中统计各用户表记录条数 的两种方法 代友招中高级.NET开发工程师【上海-徐汇】 在64位Windows系统上安装Toad和PLSQL Developer等Oracle客户端工具 又是一年生日到,哥老了。。。 一个简单的PV统计例子,演示如何利用内存缓冲高并发环境下的计数 - LanceZhang - 博客园 文章目录:ASP.NET AJAX Advance Tips & Tricks 系列文章【共10篇】 Digg被黑了?No,呵呵 ASP.NET AJAX Advance Tips & Tricks (11) 三种方法动态创建Tooltip PPT:ASP.NET AJAX 性能优化 文章目录:使用VisualStudio 2010从分析到实施系列【共5+3篇】
不需编译让aspx页自主筛选数据绑定记录
LanceZhang · 2011-03-08 · via 博客园 - LanceZhang

看到园友的一篇文章,说在一些企业门户站点里,我们经常会去根据需求变更来修改数据绑定的筛选条件,深有同感。而诸如企业门户这些场景一般也不用考虑什么性能之类的非业务要求,尽快的完成业务变更和尽可能少的减少网站编译更新次数却是网站技术支持团队的核心竞争力之所在。

不妨设想一下,如果用Store Procedure+DAL+BLL 写好的一个列表查询,如果要适应查询条件变更,则要动的地方恐怕很多,还需要重新编译,再把一堆dll更新上去。。。

看了“活跃的毛虫”兄弟的代码,本人也有所感悟,在此也分享一种更加“动态”的绑定方法:

大家知道,在.NET3.5以来,与Linq同时也提供了很多针对泛型集合的扩展方法,如Where/Take/OrderBy...等等。

在这样的场景中, 这些扩展方法也可以大有用场。比如下面的例子:

<p>
        
<asp:GridView ID="GridView1" runat="server" DataSource='<%#GetNewsData().Where(r=>r.Subject.StartsWith("aaa"))%>'>
        
</asp:GridView>

</p> 

public partial class About : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        DataBind();
    }
public static List<NewsData> GetNewsData()
    {
        List
<NewsData> result = new List<NewsData>();

        result.Add(

new NewsData() { Subject = "aaaa" });
        result.Add(
new NewsData() { Subject = "bbb" });
        result.Add(
new NewsData() { Subject = "aa22" });
        result.Add(
new NewsData() { Subject = "aa1" });return result;
    }
public class NewsData
    {
        
private string subject;public string Subject
        {
            
get { return subject; }
            
set { subject = value; }
        }
    }

} 

更加动态的实现了查询条件在aspx页内定义。

需要注意的是:

这种写法不适用于大型应用,每个页面实例的CPU和内存开销都不小。 而且对原始数据集合(未经筛选的数据集),最好能够做到一定的缓存,从减少不必要的IO开销。