欢迎投稿

今日深度:

一句代码实现批量数据绑定 上(1)(5)

四、过滤不需要绑定的属性

在默认的情况下,第一个BindData方法指定容器控件)会遍历实体的所有属性,将其绑定到对应的控件上。可能在有的时候,对于某些特殊的属性,我们不需要进行绑定。比如,某个控件的ID虽然符合实体属性的映射,但是它们表示的其实根本不是相同性质的数据。

为了解决在这个问题,在BindingMapping类型中定义了一个布尔类型的AutomaticBind属性。如果你在绑定前将该属性设置成False,那么基于该BindingMapping的数据绑定将被忽略。如果你调用BindData(object entity, Control container, string suffix = "")这个重载,你可以通过注册DataItemBinding事件将相应BindingMapping的AutomaticBind属性设置成False。如果你调用BindData( object entity,IEnumerable<BindingMapping> bindingMappings)这个重载,你只需要在调用之间将相应BindingMapping的AutomaticBind属性设置成False。

我们将我们的程序还原成最初的状态,现在通过注册BindingMapping事件将基于Birthday的BindingMapping的AutomaticBind属性设置成False:

  1.  public Default()  
  2.  {  
  3.      this.DataBinder = new Artech.DataBinding.DataBinder();  
  4.      this.DataBinder.DataItemBinding += (sender, args) => 
  5.          {  
  6.              if (args.BindingMapping.Control == this.Birthday)  
  7.              {  
  8.                  args.BindingMapping.AutomaticBind = false;  
  9.              }  
  10.         };  

程序执行后,Birthday对应的TextBox将不会被绑定:

 


www.htsjk.Com true http://www.htsjk.com/shujukujc/18893.html NewsArticle 四、过滤不需要绑定的属性 在默认的情况下,第一个BindData方法指定容器控件)会遍历实体的所有属性,将其绑定到对应的控件上。可能在有的时候,对于...
评论暂时关闭