在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在性能上的损耗并不构成性能瓶颈。

转载于:https://blog.51cto.com/oec2003/1043822

Asp.Net中替代Eval的两种方式相关推荐

  1. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

  2. Java中HashMap遍历的两种方式

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  3. 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    实验4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 姓名:李冬辉 学号:20133201 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http ...

  4. sh执行文件 参数传递_详解shell中脚本参数传递的两种方式

    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...

  5. Asp.net MVC在Razor中输出Html的两种方式

    http://qubernet.blog.163.com/blog/static/177947284201485104616368/ Razor中所有的Html都会自动编码,这样就不需要我们手动去编码 ...

  6. WCF中的ServiceHost初始化两种方式

    在宿主程序中初始化ServiceHost有直接写代码和使用配置文件两种方式.使用ServiceHost首先要引用System.ServiceModel 命名空间. 1 代码方式 using(Servi ...

  7. Java并发基础01. 传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...

  8. Java中实现多线程的两种方式之间的区别

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  9. WCF中的ServiceHost初始化两种方式(宿主)

    在宿主程序中初始化ServiceHost有直接写代码和使用配置文件两种方式.使用ServiceHost首先要引用System.ServiceModel 命名空间. 1 代码方式 using(Servi ...

最新文章

  1. 编程基础知识科普:C#中的问号运算符
  2. 如何使用 python 减少 kaggle Mushroom Classification 数据集中的特性数量?
  3. java必读书籍_必读:Java Java
  4. 生活 list.php,list.php
  5. 环形电流计算公式_圆环电流的电流密度
  6. 计算机编程语言分类与区别
  7. 新浪微博api接口java_Java调用新浪微博API【转】
  8. 微信看涨跌30秒平台,10元微交易平台排行榜
  9. 超高频RFID R200系列远距离一体化读写器开发测试
  10. VC2005-应用程序正常初始化失败-0xc0150002
  11. java的duplicate用法_Java FloatBuffer duplicate()用法及代码示例
  12. 深度 | 刘群:基于深度学习的自然语言处理,边界在哪里?
  13. CSS3实现对话气泡效果
  14. the计算机科学全球大学排名,2020THE计算机科学专业排名发布,内地60所大学入榜,清华全球15...
  15. 关于servlet和jsp的学习总结二(详细)
  16. Java 生成 outLook .msg 文件
  17. C语言:一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹;求它在第10次落地时,共经过多少米,第10次反弹多高;
  18. docker里面pytorch关于gloo地址声明
  19. IDA dword_xxx DCD 0xxxx用十六进制数表示的字符串解读
  20. 关于QT TTS ( TextToSpeech ) 编码导致的只能读英文不能读中文的问题

热门文章

  1. 2022版中国钕铁硼行业竞争格局与产销潜力预测报告
  2. 中国广电设备行业十四五运营模式与投资机遇研究报告2022版
  3. Microsoft CryptoAPI加密技术(二)
  4. Python 为什么要使用描述符?
  5. 怎么证明权重不相同的加权无向图的最小生成树是唯一的 (图论)
  6. HDU 1811 Rank of Tetris(并查集按秩合并+拓扑排序)
  7. cmake + visual studio 配置出错的解决方法
  8. 清空SQL Server日志
  9. 腾讯大佬教我的工作方法(非常有效!)
  10. 互联网公司败局汇总,这些公司都是怎么死的?(下篇)