ORM框架实现数据的自动绑定添加修改 <二>

间隔上篇文章ORM框架实现数据的自动绑定添加修改 <一> 两个月了才写这个二,实在是最近没心情写关于技术的博客啊,刚研究出来的时候蛮兴奋,过了兴奋期就不想提啦。上次写文章就是因为股票暴跌,这次也是暴跌,换换脑子吧。

上篇提到都流行orm了,后台都有代码生成器了,难道前台还要自己写代码吗?今天就说说利用反射机制自动绑定数据持久层的类吧!

protected override void OnItemDataBound(RepeaterItemEventArgs e)
{
 
foreach (Control var in e.Item.Controls)
 {
  Type tt 
= e.Item.DataItem.GetType();
  System.Reflection.PropertyInfo _proInfo 
= tt.GetProperty(var.ID);
  
if (_proInfo != null)
  {
    text 
= _proInfo.GetValue(e.Item.DataItem, null== null ? string.Empty : _proInfo.GetValue(e.Item.DataItem, null).ToString();
  }
 }
}

其实核心就这一段代码,首先判断绑定的实体类的类型。然后通过控件的ID找到对应实体类中同名的属性,并且获得他的值。

其实这个太简单啦没啥好写的。不过这里有一个技巧。如果有个项目大部分列表中出现人员ID的时候就自动的转换成人员名称并且鼠标点击的时候弹出一个页面。这时候可以写一个接口来实现代码的重用。

public interface ICustomItem
{
 
object DataItem{ getset;}
}

然后再上面的循环中加入

if (var is ICustomItem)
{
 (var 
as ICustomItem).DataItem = e.Item.DataItem;
}

在具体的项目中只要实现这个接口,这个Repeater就会按照你的要求自动的绑定数据并显示出来啦。

今天一口气写了两篇关于偷懒的文章,精神可嘉啊。下篇写关于自动添加的控件啦,这个是重头戏,在数据添加和修改的时候特别方便,基本上能达到不写代码就可以实现。

原文地址:https://www.cnblogs.com/SoulStore/p/1210468.html