zoukankan      html  css  js  c++  java
  • ASP.NET偷懒大法二

    上篇提到都流行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就会按照你的要求自动的绑定数据并显示出来啦。

    顺便说一下:其实GirdView也可以实现自动绑定的功能,但我总觉得GirdView太庞大了,做Web前台的话实在是吃不消。所以我很喜欢Repeater这种轻量级的。

  • 相关阅读:
    T-SQL部分函数(转)
    sql server中触发器
    sql server中查询结果集顺序问题
    sql server中的TimeStamp时间戳与UniqueIdentifier数据类型
    SQL
    SQL表的最基本操作练习
    增删改查 T-SQL最基本操作
    SQL表的默认常用数据类型
    算法训练 P1102
    算法训练 最短路
  • 原文地址:https://www.cnblogs.com/SoulStore/p/1222923.html
Copyright © 2011-2022 走看看