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

做b/s的,经常要对数据操作,大部分是添加、修改、删除、查询 这样的操作,对于查询表现到界面上就是数据列表。最常用的控件就是DataList DataGrid Repeater这些数据绑定控件。其中Repeater是我最常用的,因为他生成的代码最少,自定义功能也强。大多时候就是拖控件,在ItemTemplate项里面加上html的样式,在需要显示数据的地方放上Literal,然后在ItemDataBound里面写数据绑定的代码。天天重复的劳动,特别是在ItemTemplate中需要绑定项目多的时候,常常让我厌烦。有没有什么办法让程序自己给你做这些事情呢?

其实很简单就能实现,重写Repeater控件,让ItemDataBound事件自动遍历ItemTemplate中的控件,然后自己按照控件名字绑定数据。

protected override void OnItemDataBound(RepeaterItemEventArgs e)
{
 
if (e.Item.ItemIndex >= 0)
 {
  
foreach (Control var in e.Item.Controls)
  {
   
if (var.ID != null)
   {
     string text = "";
     if (e.Item.DataItem.GetType().Name == "DataRowView")
     {
       DataRowView dr 
= (e.Item.DataItem as DataRowView);
       
if (dr.DataView.Table.Columns.Contains(var.ID))
       text 
= dr[var.ID].ToString();
     }
     switch (ControlType.Name)
     {
       case "Literal":
       (var 
as Literal).Text = text;
       break;
       case "Image":
       (var 
as Image).ImageUrl = text;
       break;
      }
    }
   }
 }
 base.OnItemDataBound(e);
}

很简单吧,在switch里面可以按照你的要求加任意的控件类型。只要你ItemTemplate中的控件ID和DataSet中的名称一样就自动绑定。如果不一样就不管啦。你还是可以在aspx里面做二次处理。

不过这里有个问题,只能处理数据源是Dataset的,现在都流行orm了,后台都有代码生成器了,难道前台还要自己写代码吗?
现在就可以拿出我们asp.net的利器啦。【反射】太棒的功能了,让我们可以做更多的事情。其实思路也是类似的留到下一篇写吧!:-)

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