zoukankan      html  css  js  c++  java
  • ListView控件的基本操作

    ListView是.NetFramework3.5以后VS2008新增加的一个控件,当然我们现在都用VS2010了,当然也就有了,我的VS2010安装的是试用版的,120天以后就过期了,过期以后想着安装正式版的,可是报了一系列的安装错误,先用着VS2008吧。VS2010试用版的过期后让我给卸载了。
    一听ListView控件是最新加上去的,那么它肯定是个集大成者,有着以前哪几种控件的种种优点。没错,在repeater、DataList、GridView控件中所拥有的优点,在ListView控件中都包含了。确实是一个集大成的控件。
    DataList是外层给我们套了一个Table,repeater没有,那么ListView是集成优点来着,外层有Table好啊还是没有好啊,反正我是不太喜欢外层套上一个Table,然后我必须在每一个TD标记里面在嵌套一个Table标记,多麻烦啊。所以说repeater灵活,ListView就继承过来这个优点了,它的外层代码全是我们手写,不像DataList一样外层默认给我们套一个Table表格,ListView像repeater一样:没有外层的Table表格了。
    回顾一下,我们的repeater控件用起来简洁,但是要自己写挺多代码。DataList自己提供了很多的模板给我们,自然方便得多,不过没有repeater那么简洁。GridView也是提供了很多的模板给我们,它比DataList更方便,甚至有些操作不用写一行后他代码就可以实现。
    它们三者(repeater、DataList、GridView控件)是互相补充的,不存在谁去替代谁的概念。repeater比DataList和GridView更加灵活简洁,而DataList和GridView提供给我们现成的功能更加全面,使用起来更加方便。它们谁也替代不了谁。
    功能上repeater、DataList、GridView能够做到的,ListView也能够做到。我想这也许就是这个控件推出的目的吧。
    但是ListView也存在它的弊端,它不存在可视化的界面,也就是说它只能让我们看着HTML代码去写我们要实现的功能,要去创建的模板。不像DataList和GridView那样有很多的模板,很多的可视化编程操作界面。它没有,这点它非常类似于repeater。
    ---------------------------------------------------------------------
    下面就来说说ListView控件的模板:
    它的模板主要用到的有,注意是主要用到的:
      <LayoutTemplate>
      
      </LayoutTemplate>
      <GroupTemplate>
      
      </GroupTemplate>
      <ItemTemplate>
      
      </ItemTemplate>
      
      <EditItemTemplate>
      
      </EditItemTemplate>
     
    ---------------------------------------------------------------------
    下面我用这些模板来实现两个效果:
    第一个效果的显示结果:
    ListView控件的基本操作 它的后台代码我和大家来分析分析:
    首先是LayoutTemplate模板中的代码,这可以说使我们最常用到的一个模板:
    ListView控件的基本操作 我们显示数据的表格就放在这里面,然后显示的那块以前称作头模板的代码页写在这里面。继续分析:
    ListView控件的基本操作 我标出来的一个重要的属性:itemPlaceholder,它会自动的去找ItemTemplate模板中的内容。那这就好办了,我们的ItemTemplate模板可以做了。注意:我们必须设itemPlaceholder这个属性,不设置或写错了,那就完蛋了,除非说把这个属性的名称给改成自己想要的:在哪里改?在ListView属性中的:
    ListView控件的基本操作去改,改成自己想要的,然后填写自己改的那个名称就可以了。
    ListVIew的ItemTemPlate的做法和repeater做ItemTemPlate一样:
    ListView控件的基本操作 不多说了,关键是上面注意的内容。
    再就是在这里绑定数据的时候,只能用Eval去绑定(单向绑定),而不能用Bind双向绑定。因为我们在这里用到的是TD标记,而不是一个控件。Bind双向绑定的前提是必须在对一个控件的数据绑定,或放在带有runat=server这句话的HTML标记中才可以。而Eval就没那么别扭了,它的灵活性更宽,可以放在控件中,也可以放在任意的HTML标记中。不过Eval支持的是单向绑定,所谓的单向绑定就是只能从数据库中把数据绑定显示出来,而不能把修改完的数据送到数据库中去。而Bind虽然要求的比较多,但是支持双向绑定,既能够把数据从数据库中显示出来,也能够把数据送回到数据库中去。
    ---------------------------------------------------------------------
    现在再来说说ListView的另一个模板:GroupTemPlate分组模板
    我们知道LayoutTemPlate模板放一个Table表格它可以直接包含ItemTemPlate也可以通过包含一个GroupTemPlate 再来通过GroupTemPlate包含ItemTemPlate
     
    GroupTemPlate模板的一个重要的属性:GroupItemCount 设置我这一个模板的一行显示几个ItemTemPlate
    下面我们来看一个效果:
    ListView控件的基本操作 这就是用GroupTemPlate实现的效果:
    来分析一下代码:
    <LayoutTemplate>
        <table width="100%" border="0" cellspacing="1" cellpadding="1" bgcolor="navy" color=white>
            <asp:PlaceHolder ID="groupPlaceholder" runat="server"></asp:PlaceHolder>
        </table>
        </LayoutTemplate>
        <GroupTemplate>
        <tr>
            <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
        </tr>
        </GroupTemplate>
        <ItemTemplate>
          <td align="center">
          <img src='<%# eval_r("Pic") %>' height="50px" width="50px" />
          </td>
          <td align="center"><%# eval_r("Name") %></td>
          <td align="center"><%# eval_r("Price") %></td>
          <td align="center"><%# eval_r("Brand") %></td>   
          <td align="center"><%# eval_r("Oil") %></td>
          <td align="center"><%# eval_r("Powers") %></td>
          <td align="center"><%# eval_r("Exhaust") %></td>
        </ItemTemplate>
    后台没什么代码,所以说ListView继承了repeater、DataList、GridView的所有的优点。
    ---------------------------------------------------------------------
    用ListView实现分页的效果:
    用到的控件DataPager
    必须设置两个属性:PageContentID 对谁分页
          PageSize    每页显示几行数据
    ListView控件的基本操作 ListView控件的基本操作 对DataPager控件外观的显示进行控制:
    点击DataPager右上角的小三角形,然后点击:编辑页导航字段
    ListView控件的基本操作 效果如下:
    ListView控件的基本操作 这种分页的缺陷还是把数据从数据库中放入到List泛型集合中,然后放到内存中进行分页。缺陷和用GridView配合SqlDataSource实现分页缺陷一样。
    比较可行的分页是用配合ObjectDataSource实现分页或使用存储过程实现分页,或使用LinQ实现分页。这个思想和repeater、GridView、DataList实现分页一样。
    ---------------------------------------------------------------------
  • 相关阅读:
    Elasticsearch嵌套聚合
    Elasticsearch+Logstash+Kibana教程
    《胡雪岩·灯火楼台》—— 读后总结
    Elasticsearch使用REST API实现全文检索
    Elasticsearch集群配置以及REST API使用
    《Node web开发》笔记
    我的第一个Node web程序
    Spring boot整合shiro权限管理
    SpringBoot 整合Shiro 一指禅
    SpringBoot,用200行代码完成一个一二级分布式缓存
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/2293751.html
Copyright © 2011-2022 走看看