首页 > 代码库 > 替代Eval的两种方式
替代Eval的两种方式
在asp.net中的数据绑定中,我们经常会用到Eval,不过大家都知道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在性能上的损耗并不构成性能瓶颈。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。