不需编译让aspx页自主筛选数据绑定记录
看到园友的一篇文章,说在一些企业门户站点里,我们经常会去根据需求变更来修改数据绑定的筛选条件,深有同感。而诸如企业门户这些场景一般也不用考虑什么性能之类的非业务要求,尽快的完成业务变更和尽可能少的减少网站编译更新次数却是网站技术支持团队的核心竞争力之所在。
不妨设想一下,如果用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>
<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; }
}
}
{
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开销。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?