Asp.Net中替代Eval的两种方式
2009-06-26 17:16
543 查看
在asp.net中的数据绑定中,我们经常会用到Eval,不过大家都知道Eval绑定是通过反射来实现的, 而反射势必会对性能造成一定的影响。不过有两种替代的方式来实现绑定数据,对性能略有提高。
1 当数据源为DataTable时,用下面的方式:
后台代码
前台代码
2 当数据源为泛型类时,用下面的方式。
后台代码
前台代码
经过测试在10w以上数据量的时候性能差别才比较明显,而我们平时做数据绑定的时候通常都是用的分页存储过程或其他的分页方式,每页最多几十条数据,所以我认为Eval在性能上的损耗并不构成性能瓶颈。
1 当数据源为DataTable时,用下面的方式:
后台代码
protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("Name", typeof(System.String)); dt.Columns.Add("Age", typeof(System.Int32)); for (int i = 0; i <= 20; i++) { DataRow dr = dt.NewRow(); dr[0] = "oec2003_" + i.ToString(); dr[1] = i + 20; dt.Rows.Add(dr); } rptUser.DataSource = dt; rptUser.DataBind(); }
前台代码
<asp:Repeater ID="rptUser" runat="server"> <ItemTemplate> 姓名:<%# ((DataRowView)(Container.DataItem))["Name"] %> 年龄:<%# ((DataRowView)(Container.DataItem))["Age"]%><br /> </ItemTemplate> </asp:Repeater>
2 当数据源为泛型类时,用下面的方式。
后台代码
protected void Page_Load(object sender, EventArgs e) { List<User> user = new List<User>(); for (int i = 0; i < 10; i++) { user.Add(new User(i, "oec2003")); } rptUser.DataSource = user; rptUser.DataBind(); }
前台代码
<asp:Repeater ID="rptUser" runat="server"> <ItemTemplate> 姓名:<%# (Container.DataItem as User).Name %> 年龄:<%# (Container.DataItem as User).Age%><br /> </ItemTemplate> </asp:Repeater>
经过测试在10w以上数据量的时候性能差别才比较明显,而我们平时做数据绑定的时候通常都是用的分页存储过程或其他的分页方式,每页最多几十条数据,所以我认为Eval在性能上的损耗并不构成性能瓶颈。
相关文章推荐
- asp.net中购物车的两种存储方式Session和Cookie的应用实例
- asp.net操作javascript:confirm返回值的两种方式
- ASP.NET Eval四种绑定方式
- ASP.NET Eval四种绑定方式
- asp.net数据库配置文件连接字符串的两种方式
- asp.net mvc 实现判断用户是否登录的两种方式
- ASP.NET Eval四种绑定方式 及详解
- ASP.NET Eval四种绑定方式
- 替代Eval的两种方式
- [Asp.net]DropDownList改变默认选中项的两种方式
- ASP.NET 3.5跨页面回传数据的两种方式。
- asp.net接收地址栏传参的两种方式
- ASP.NET Eval四种绑定方式(转载)
- ASP.NET 3.5跨页面回传数据的两种方式。
- asp.net中购物车的两种存储方式Session和Cookie的应用实例
- ASP.NET MVC 下拉框的传值的两种方式
- ASP.NET Eval四种绑定方式
- Silverlight实用窍门系列:37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)【附带实例源码】
- ASP.NET GDI+输出的两种方式
- asp.net中读取数据库的两种方式