zoukankan      html  css  js  c++  java
  • 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就会按照你的要求自动的绑定数据并显示出来啦。

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

  • 相关阅读:
    rsyslog imfile 模块说明
    正确的健身是啥意思——北漂18年(79)
    CC++ 内存对齐
    异步请求和超时控制
    dubbo入门(1)
    Query Cache Configuration
    perl 批量生成分区表
    perl 通过生成mysql 批量sql
    next 跳过当前循环
    last 退出当前循环
  • 原文地址:https://www.cnblogs.com/SoulStore/p/1210468.html
Copyright © 2011-2022 走看看