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这种轻量级的。

  • 相关阅读:
    加入创业公司有什么利弊
    Find Minimum in Rotated Sorted Array II
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Find Minimum in Rotated Sorted Array
    Remove Duplicates from Sorted Array
    Spiral Matrix
    Spiral Matrix II
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/SoulStore/p/1222923.html
Copyright © 2011-2022 走看看