深入ASP.NET数据绑定(下)——多样的绑定方式
null) && !Convert.IsDBNull(value)) 223: { 224: return false; 225: } 226: return true; 227: } 228: } 其中我们可以发现有三个静态只读变量:
OK,我们先不看代码,就应该知道问题就出在这个地方。当我们分析哪里用到indexExprEndChars时分 找到这个方法: public static object GetIndexedPropertyValue(object container, string expr) 我们不需要阅读里面的代码,通过下面的expr参数注释我们就可以很快得到答案: expr 从 container 对象到要放置在绑定控件属性中的公共属性值的导航路径。此路径必须 是以点分隔的属性或字段名称字符串,如 C# 中的 Tables[0].DefaultView.[0].Price 或 Visual Basic 中的 Tables(0).DefaultView.(0).Price。 它告诉我们,我们不仅可以使用字段名的方式,同时还可以使用索引下标的方式来绑定字段值(C#和 VB,分别使用[]和()来取索引值),正因为如此,我们才不可以在字段名中使用括号和中括号。如上我们 假设"电压(V)"字段的索引下标是2,那么我们可以像下面这样绑定,来解决特别字段名带来的问题:
上面的注释同时还告诉,我们是可以通过一个对象的导航路径如 对象.属性.子属性 的方式来绑定一 个数据项的间接属性,这个我们可以通过对expressionPartSeparator静态字段的使用,得以验证:
前面的那个Eval重载,把expression表达式用expressionPartSeparator字符分隔开,然后调用内部的 Eval(object,string[])重载,在这个重载中,按顺序去一级一级递归遍历属性值,最终找到最后的那个 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |