• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Asp.net中数据绑定方法的总结

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  经常在模板中使用Eval进行数据绑定, 如 <%#Eval("title") %>表示绑定到title列. 实际上这个Eval()方法是Page类的受保护方法,最终调用的是共享的静态DataBinder.Eval()方法.通过Reflector可以看到

protected internal object Eval(string expression)
{
    this.CheckPageExists();
    return DataBinder.Eval(this.Page.GetDataItem(), expression);
}

所以可以用下面的表达式来替换上面使用Eval()方法的表达式:

<%# DataBinder.Eval(Container.DataItem, "title")%>

  而DataBinder.Eval(object container, string expression)方法, 关于 container 在 msdn 上特别指出 :

Page

对于Eval()方法本身是利用反射技术来根据名称查找属性,而使用反射会有一定的性能损失. 作为一种折中的方法, 可以在表达式中将数据项强制转换成某种类型以提高性能:

<%#((System.Data.DataRowView)Container.DataItem)["title"]%>

  网上关于Container.DataItem的介绍:

  Container是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量, 其类型是可以进行数据绑定的控件的数据容器类型(如Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性, 因此可以写成Container.DataItem, 介个属性返回的正是在被绑定的数据源中的那个数据项. 如果你的数据源是DataTable,那么这个数据项的类型就是DataRowView

  另外: 使用Eval()方法只能进行单项数据绑定. 使用Bind()方法可以进行双向绑定, 不仅可以显示数据项, 而且还可以对数据项进行编辑

查看更多绑定技巧:

  Asp.net中DataBinder.Eval用法的总结  

      Asp.net之Container.DataItem 解析(转载)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.Net页面(母版页)加载顺序发布时间:2022-07-10
下一篇:
ASP.NET中,关于Session经常莫名其妙丢失的总结发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap