ListView和DataPager初试

一直以来,除非是纯后台数据用gridview,不然用的都是repeater,因为它生成的代码最少,基本上是纯html,可以完全自定义,很适合搞个性化开发,事实上,它就扮演了一个迭代器的角色,今天无聊翻看工具箱的时候发现了一个datapager,引起了兴趣,google之,发现其是与listview一起出现的,好像还挺不错的,第一个测试代码如下:

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
1 < asp:ListView ID = " lvtest " runat = " server " DataKeyNames = " id " DataSourceID = " ods " ItemPlaceholderID = " layoutTemplate " GroupPlaceholderID = " laydiv " GroupItemCount = " 3 " >
2 < LayoutTemplate >
3 < table >
4 < tr id = " laydiv " runat = " server " ></ tr >
5 </ table >
6 </ LayoutTemplate >
7 < GroupTemplate >
8 < tr runat = " server " >
9 < td id = " layoutTemplate " runat = " server " />
10 </ tr >
11 </ GroupTemplate >
12 < ItemTemplate >
13 < td ><% # Eval( " id " ) %> , <% # Eval( " username " ) %> , <% # Eval( " password " ) %> , <% # Eval( " email " ) %>< br /></ td >
14 </ ItemTemplate >
15   </ asp:ListView >
16 < asp:DataPager ID = " dpager " runat = " server " PagedControlID = " lvtest " PageSize = " 8 " >
17 < Fields >
18 < asp:NumericPagerField NextPageText = " ... " PreviousPageText = " ... " />
19 < asp:NextPreviousPagerField FirstPageText = " 第一页 " />
20 </ Fields >
21 </ asp:DataPager >

原理是,先设一个布局容器,布局容器里面有一个runat="server"的html容器,比如div,ul,span,tr等,这个容器就到listview标签里设为ItemPlaceholder,这样服务器就知道对应ItemPlaceholderID把模板里的内容填到那里面,最简单的用法就是这样,

我上面的稍微复杂了一点,把group加上了,其实就多包了一层,布局容器包一个分组容器,分组容器包模板html容器,然后把listview的ItemPlaceholderID设为分组容器里面的html容器id,GroupPlaceholderID设为分组容器的id,只是别忘了,分组容器因为是在布局容器里的,所以就应该有两个runat="server"的容器,如上例,tr的runat="server"就应该在group里面再写一次,别以为写在layouttemplate就可以了。

 

发现也就这么回事,假如真要实现多列的话,要么你把它丢到一个table里,然后把模板设为td,不然的话,就只有丢到一个个div或li里,再用css来实现多列(以前我的一贯做法),所以本质上它最大的好处就是自带了一个分页吧

其实aspnetpager已经是一个相当好的控件了,只不过,我一直在寻找一个不需要控件的分页方式,甚至自己还写了分页类(当然只能url分页了,要模拟linkbutton也可以,但暂时觉得没那个必要,实在要做的话,只有触发__dopostback了),所以,既然这个datapager只能和listview一起用,那就把listview当成迭代器吧,毕竟这种情况下,分页既不需要自已写,也不需要用控件,呵呵。。。话说,这么懒的话,一般只能用在企业项目中了,互联网项目可是体验优先,想懒是不可能的:)

不过,既然所有的模板都在"placeholder"里面,那么你显然应该知道了,里面的所有控的ID会没有悬念地加上placeholder的id前缀,写css或页面脚本的时候要注意了,免得找不到控件。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值