网络学院
迷城学吧
硬件
手机
旅游
生活
渔鱼
美图
电影
游戏
  导航: 迷城学吧 · 网站编程教程 · ASP教程 · ASP函数组件

ASP 2.0 数据绑定函数Eval()地机制

 
最新推荐文章
图文推荐
 
『ASP 2.0 数据绑定函数Eval()地机制』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2006-6-17 

Author: Walkdan (walkdan(at)gmail.com)

 ASP.NET 2.0 的Eval()简化了掉了ASP 1.1 Container.DataItem,比如:

 <%# (Container.DataItem as DataRowView)["ProductName"].ToString() %>      

 ASP 1.1简化为:(去掉了类型指定, Eval通过反射实现,本文不再阐述)
 <%# DataBinder.Eval(Container.DataItem, "ProductName").ToString() %>      

 ASP 2.0又简化为,去掉了Container局部变量:
 <%# Eval("ProductName") %>
 
 Eval()是TemplateControl:Page 的方法
 TemplateControl.Eval()可以自动计算出Container, 机制就是从一个dataBindingContext:Stack堆栈来获取。
 
 1. 建立DataItem Container 栈:
    在Control.DataBind()中,建立,这样可以保证子控件的DataItem Container始终在栈顶。
   
    public class Control
    {
        protected virtual void DataBind(bool raiseOnDataBinding)
        {
            bool foundDataItem = false;
            if (this.IsBindingContainer)
            {
                object o = DataBinder.GetDataItem(this, out foundDataItem);
                if (foundDataItem)
                    Page.PushDataItemContext(o);        <-- 将DataItem压入堆栈
            }
            try
            {
                if (raiseOnDataBinding)
                    OnDataBinding(EventArgs.Empty);
                   
                DataBindChildren();                     <-- 绑定子控件
            }
            finally
            {
                if (foundDataItem)
                    Page.PopDataItemContext();          <-- 将DataItem弹出堆栈
            }
        }
    }

  2. 获取DataItem Container
    public class Page
    {   
        public object GetDataItem()
        {
            ...
            return this._dataBindingContext.Peek();     <-- 读取堆栈顶部的DataItem Container,就是正在绑定的DataItem Container
        }
     }
    
   3. TemplateContro.Eval()
    public class TemplateControl
    {
        protected string Eval (string expression, string format)
        {
            return DataBinder.Eval (Page.GetDataItem(), expression, format);   
        }
    } 

如果您有什么疑问,可以至论坛提出或者解答他人的疑问    返回页面顶部

·上一篇:
·下一篇: 没有了
·导航: 迷城学吧 · 网站编程教程 · ASP教程 · ASP函数组件
网友自拍|生活百味|历史图片|摄影世界|明星图片|体坛图库|美女图片|图片纪实|世界奇观
相关文章
advertisement
Photshop高手进阶

关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 申请链接 | 设为首页 | 本页加入收藏 返回顶部  
网站文本地图
  版权所有:迷城学吧 欢迎各种媒体转载我们的原创作品[转载请注明出处]
Copyright © 2005-2008 www.McXb.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Monsi. Optimized for 1024x768 to Firefox and MS-IE6 7. Site powered by JoyON.
红盾Gov315
有一个迷样的城市
在每个人的内心深处
让我们探索发掘这古老的墓