repeat,datalist,gridview控件的区别? 考试用!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了repeat,datalist,gridview控件的区别? 考试用!相关的知识,希望对你有一定的参考价值。

参考技术A griview优点:功能最强大,提供分页,编辑,删除,选择等等很多功能.
缺点:占用系统资源大,速度非常非常慢。效率极低。
repeater优点:功能简单,效率高,容易灵活控制生成的html代码,分页需要自己实现,适合前台使用。
缺点:功能简单。需要自己做更多的事情才能完成某个功能。
DataList 控件
DataList Web 服务器控件以可自定义的格式显示数据库行的信息。显示数据的格式在创建的模板中定义。可以为项、交替项、选定项和编辑项创建模板。标头、脚注和分隔符模板也用于自定义 DataList 的整体外观。通过在模板中包括 Web 服务器控件,可将列表项连接到代码,这些代码使用户得以在显示、选择和编辑模式之间进行切换。
DataList 与GridView不同,必须通过自定义的template 来显示数据项。DataList 与 GridView相比不支持排序,分页功能。本回答被提问者和网友采纳

甩掉DataList,Repeater,列表数据显示得灵活--转

在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页面的相关操作就很容易理解了。

源码下载

 





















































以上是关于repeat,datalist,gridview控件的区别? 考试用!的主要内容,如果未能解决你的问题,请参考以下文章

数据控件GridView、DataList和Repeater都能实现数据表中多行数据的显示

repeat,datalist,gridview控件的区别? 考试用!

甩掉DataList,Repeater,列表数据显示得灵活--转

<ItemTemplate>标签在html里面有啥具体的作用?

Jquery Ajax 如何实现动态加载Repeater 或者 DataList

如何将列表数组与 GridView 或 DataList 绑定?