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

  • 相关阅读:
    Spring AOP 注解开发
    AOP的专业术语
    Java自定义注解的实现和应用
    Spring 声明式事务管理
    另一种线程安全机制:在事务管理中起到巨大作用的 ThreadLocal
    MySQL的二级索引
    数据库的范式化和反范式化
    MySQL为表字段添加索引
    mysql索引(二)----如何高效使用索引
    Alexnet网络
  • 原文地址:https://www.cnblogs.com/SoulStore/p/1222929.html
Copyright © 2020-2023  润新知