替代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在性能上的损耗并不构成性能瓶颈。
替代Eval的两种方式的更多相关文章
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
		
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
 - Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
		
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
 - ajax的data传参的两种方式
		
ajax的data传参的两种方式 本文为转载. 1.[javascript] view plain copy /** * 订单取消 * @return {Boolean} 处理是否成功 */ func ...
 - 多线程之线程间协作的两种方式:wait、notify、notifyAll和Condition
		
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
 - 14 线程间协作的两种方式:wait、notify、notifyAll和Condition
		
原文链接:http://www.cnblogs.com/dolphin0520/p/3920385.html 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者- ...
 - 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
		
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
 - Java并发--线程间协作的两种方式:wait、notify、notifyAll和Condition
		
在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界 ...
 - 多线程通信的两种方式? (可重入锁ReentrantLock和Object)
		
(一)Java中线程协作的最常见的两种方式: (1)利用Object的wait().notify()和notifyAll()方法及synchronized (2)使用Condition.Reentra ...
 - Spring Boot 整合 Shiro ,两种方式全总结!
		
在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 今天松哥就来和大家聊聊 Spring Boot ...
 
随机推荐
- 【狼窝乀野狼】Serializer妙手回春
			
在我们很多程序中,需要将数据保存到本地,以便于下次打开还能看到原始数据.例如我们Xmind思维导图,例如我们的Power Designer等等,都是有保存一个隶属于自己的工程文件,那么今天我要说的就是 ...
 - c语言关于二进制的输出
			
c语言中的二进制输出是没有占位符的,不像八进制:%o: 和十六进制:x%: c中二进制的输出 //右移31位,从最高为开始和1做&运算,得到每一位的二进制数值 void printbinry( ...
 - 高德开发 android 出现 key 鉴权失败
			
环境windows + android studio 原因: 曾经更改过key.store 解决办法: 首先运行cmd移动到keystore的目录下keytool -list -keystore 文件 ...
 - 简单制作mib表
			
今天放假后第一天上班,将假前自学制作mib表的东西说一下. 在这里呢,我以世界-中国-上海-闵行这种包含关系介绍,感觉更容易理解. MIB file的开始和结束 所有的MIB file的都以DEFIN ...
 - 使用Lucene.net提升网站搜索速度整合记录
			
1.随着网站数据量达到500万条的时候,发现SQL数据库如果使用LIKE语句来查询,总是占用CPU很忙,不管怎么优化,速度还是上不来; 2.经过网上收集资料,HUBBLE.net目前虽然做得不错,但需 ...
 - java mail实现Email的发送,完整代码
			
java mail实现Email的发送,完整代码 1.对应用程序配置邮件会话 首先, 导入jar <dependencies> <dependency> <groupId ...
 - Matlab实现二进制矩阵转换为十进制
			
一.问题描述 [1 1 1 0 1 0 1 1 0 1 0 0 1 1 0] 每两位3转换为一个十进制数,共5列,那么转换后是ceil(5/3)=2列. [7 1 6 1 1 2] 二.问题分析 1. ...
 - NYOJ-36 最长公共子序列  AC                                                    分类:            NYOJ             2014-01-03 20:54    155人阅读    评论(0)    收藏
			
#include<stdio.h> #include<string.h> #define N 1010 #define max(x,y) x>y?x:y int dp() ...
 - asynDBcenter(复习)
			
asynDBCenter asynDBCenter是GS和DBCenter之间的模块,有了他GS访问数据库就是异步的了,以前是同步的,加入某个操作很耗时那么GS就在那等待这个返回值. .对于std:: ...
 - [原]android不支持命名的semaphore
			
之前sem_open在iOS上, 创建命名的semaphore没有问题 (iOS不支持匿名的semaphore), 但是现在Android平台的sem_open时候报错,返回ENOSYS. 命名的se ...