在WebForm 显示列表数据我们一般使用服务器控件Repeater、DataList或者GridView ,功强大能,使用简单。但同时也是有代价的,
 一:不管你用哪个控件都需要牺牲一些额外的性能,因为他们的生命周期很复杂。
 二:绑定数据时不够灵活,显示的过程是不透明的,想随心所欲的对某一行进行额外的控制会很麻烦。
 三:会生成一对“垃圾代码”,增加页面生成和显示的负担。
 四:对css样式的控制不够灵活,如果是团队合作,和美工沟通起来有点麻烦,美工设计好的静态页面开发人员甚至不能直接拿来用
   所以放弃这些控件,直接写代码生成数据列表便能解决上面所有问题,这也是最透明,最灵活,最干净的显示方式,那我们就这样做吧。
   怎么做呢?很简单,真的很简单,牛人莫看。
   只要在页面*.aspx上调用*.aspx.cs里的方法或变量,然后循环输出即可。
 
   比如我们要在页面上显示一个用户信息数据列表。

  首先我们见一个Model类,作为demo我们就不建数据库了,如下: 
   PersonOM.cs


  public class PersonOM
    {
        public string Name { get; set; }         public int Age { get; set; }
    }

就两个属性,姓名和年龄。
    然后在WebForm1.aspx.cs里写一个方法获取用户信息:

  WebForm1.aspx.cs:


    public partial class WebForm1 : System.Web.UI.Page
    {
        public static List<PersonOM> GetResult() //这里我写的是静态方法,这样在页面调用的时候就不需要实例化当前的page类
        {
            List<PersonOM> lstPs = new List<PersonOM>();
            PersonOM ps = null;
            for (int i = 1; i <= 10; i++) 
            {
                ps = new PersonOM();
                ps.Name = "Name" + i;
                ps.Age = 20 + i;
                lstPs.Add(ps);
            }
            return lstPs;
        }
           
    }     

然后就是绑定数据了,这里我们不再使用服务器控件了,我们在WebForm1.aspx页面上循环输出:


        <ul>
            <% List<PersonOM> lstps = WebForm1.GetResult(); %>
            <% foreach ( PersonOM ps in lstps)
               { %>
              <li>姓名:<%=ps.Name %>&nbsp;&nbsp;年龄:<%=ps.Age %></li>
            <%} %>
        </ul>

  在浏览器在浏览,我们就看到了下面的画面:

  

  这样生成的页面是不含任何垃圾代码的。

  如果你使用过asp.net MVC ,你会发现和这MVC 非常相识。其实这也是MVC思想啊,有Model(PersonOM.cs)、有控制器(WebForm1.aspx.cs)、有View(WebForm1.aspx),而且都实现了三者之间的分离。
 
   当然,GetResult() 方法你也不一定必须写成静态的,非静态也是可以的,但在页面输出的时候要实例化当前page类,而且必须在<form runat="server">内。
   即:


 <form id="form1" runat="server">
   <% WebForm1 wf1 = new WebForm1();  %>
   
       <ul>
            <% List<PersonOM> lstps = WebForm1.GetResult(); %>
            <% foreach ( PersonOM ps in lstps)
               { %>
              <li>姓名:<%=ps.Name %>&nbsp;&nbsp;年龄:<%=ps.Age %></li>
            <%} %>
        </ul>
        
  </form>

  其实回过头来想一想,WebForm1是个部分(partial)类,一部分在WebForm1.aspx.cs里,一部分在WebForm1.aspx里,意识到这一点,在WebForm1.aspx页面的相关操作就很容易理解了。

源码下载

甩掉DataList,Repeater,列表数据显示得灵活--转的更多相关文章

  1. 【转】通用分页用户控件(DataGrid,DataList,Repeater都可以用它来分页)

    通用分页控件(DataGrid,DataList,Repeater都可以用它来分页) 1.建立用户控件Pager.ascx 1.1 html </ASP:LABEL></TD> ...

  2. repeater没有数据显示暂无数据,无记录

    方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <FooterTemplate> <asp:Labe ...

  3. JavaScript进度条(datalist/repeater等多个进度条)

    JS代码: function SingleProgressBar() { var iload = document.getElementById("iLoading"); var ...

  4. react列表数据显示

    react的列表数据一般是用map循环显示的. 使用map注意:map的回调函数为箭头函数时,后面如果加大括号(箭头函数常规编写),必须要有return才可以,如果箭头函数后面没有大括号(箭头函数简写 ...

  5. repeater列表中直接修改状态

    <asp:Repeater ID="RepeaterArticleList" runat="server" onitemdatabound="R ...

  6. 1-Recyclerview使用系列之Recyclerview的列表数据显示

    使用步骤已经写到我的公众号,二维码在下面,欢迎关注,谢谢. 本人联系方式: 更多精彩分享,可关注我的微信公众号: 若想给予我分享更多知识的动力,请扫描下面的微信打赏二维码,谢谢!: 微信号:Weixi ...

  7. 【原创】datalist repeater 控件的行鼠标单击 以及 滑过特效

    原文发布时间为:2009-05-06 -- 来源于本人的百度文章 [由搬家工具导入] 调用方法如:<tr id="<%# Container.ItemIndex+1 %>& ...

  8. Devxtreme 显示Master-Detail数据列表, 数据显示颜色

    ////刷新3/4簇Grid //function GetClusterGrid(id, coverageId, clusterId) { // var region = getRegionCityN ...

  9. 微信小程序云开发-数据库-商品列表数据显示N条数据

    一.wxml文件 在wxml文件中,写页面和点击事件,添加绑定事件limitGoods  二.js文件 在js文件中写limitGoods(),使用.limit(3)表示只显示3条数据

随机推荐

  1. oracle sql修改序列为当前序列开始

    declare   v_num integer;  last_value integer;Begin  select SEQ_TBM_ID.NEXTVAL into last_value from d ...

  2. ORA-00600: internal error code, arguments: [2662], [0], [1106971], [0], [1107731], [12583040]

    今天是2014-06-06,在进行数据库恢复的时候出现了一个久违的ora-600 [2662]错误.特整理例如以下: 问题描写叙述: system及数据文件误删,採用恢复数据文件的方式将数据库恢复到開 ...

  3. CIDR(无类域间路由)(转载)

    来源:百度百科 CIDR(无类型域间选路,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配 ...

  4. Android 开发之static引发的冤案

    前段时间在android手机系统上开发一个小东西,先介绍一下他吧: 就是当手指点击屏幕不论什么地方的时候会出现点击的特效,就是在你点击屏幕的地方会出现各种效果,比方:雪花纷飞;出现五彩的肥皂泡:鲜花盛 ...

  5. 【windows phone】CollectionViewSource的妙用

    在windows phone中绑定集合数据的时候,有时候需要分层数据,通常需要以主从试图形式显示.通常的方法是将第二个ListBox(主视图)的数据源绑定到第一个ListBox (从视图)的Selec ...

  6. Java中的枚举类为何不能有public构造器

    声明:本博客为原创博客.未经同意.不得转载!原文链接为http://blog.csdn.net/bettarwang/article/details/27262809. 从Java 5開始有了枚举类, ...

  7. uva 10733 The Colored Cubes<polya定理>

    链接:http://uva.onlinejudge.org/external/107/10733.pdf 题意: N 种颜色可以涂成多少种立方体~ 思路: 使正六面体保持不变的运动群总共有: 1.不变 ...

  8. 解决对象不支持“getElementsByClassName”属性或方法 ie兼容性

      解决 IE 或者兼容模式不支持 document.getElementsByClassName() 的方法 自已实现document.getElementsByClassName():   网页错 ...

  9. WF中的Bookmark

    最近在学习WF, 把自己的一些学习心得放上来 Bookmark允许你以事件驱动的方式与一个Workflow内的Activity进行交互. 如果把启动一个workflow比做开始读一本书, 在Workf ...

  10. ZOJ - 3953 Intervals 【贪心】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3953 题意 给出N个区间,求去掉某些区间,使得剩下的区间中,任何 ...