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

    为啥要起这个名字呢?因为我懒,真的很懒,懒到能剩一行代码我就不想多写一行代码。新的公司,新的项目,组长老说我的办法属于偷懒的方法,那俺就把这些偷懒的方法记录下来吧,说不定偷懒也有偷懒的好处的:)

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

  • 相关阅读:
    分享一个Fluent风格的邮件发送封装类
    写一个ActionFilter检测WebApi接口请求和响应
    一道有趣的面试题,小鸟和火车的问题
    Centos7 查看Mysql配置文件
    Centos7 grep命令简介
    Centos7 网络配置
    django之python3.4及以上连接mysql的一些问题记录
    NetCore log4net 集成以及配置日志信息不重复显示或者记录
    ionic3中关于Ionic ui component使用的一些总结
    ionic2升级到ionic3并打包APK
  • 原文地址:https://www.cnblogs.com/SoulStore/p/1222929.html
Copyright © 2011-2022 走看看