• 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的利器啦。【反射】太棒的功能了,让我们可以做更多的事情。其实思路也是类似的留到下一篇写吧!:-)

  • 相关阅读:
    9.27作业
    9.20作业
    9.13作业
    9.6作业
    localstorage,sessionstorage使用
    oracle 客户端重新安装遇到的问题
    HTML5学习笔记(<command>,<details>,<dialog>)
    HTML5学习笔记(HTML5新标签<bdi>)
    html5学习笔记(html5新标签<aside>)
    html5学习笔记(html5新标签<article>)
  • 原文地址:https://www.cnblogs.com/SoulStore/p/1210470.html
Copyright © 2020-2023  润新知