使用repeate 实现分页操作
repeater 控件自身没有分页功能,需要借助PagedDataSource 类进行分页操作
页面代码:
源码:
分页操作实现步骤:
先声明一个PagedDataSource类的实例pds ;
并对pds的属性DateSource , AllowPageing,pagesize ,currentpageindex 进行设置
currentpageindex 的值一般是通过从url中获取的,当然别的方法也可以。
分页操作借助 两个lable 和4个linkbutton 和一个droupdownlist实现
然后就会碰到一个问题:如何取到repeater控件上的这些元素?
可以这样实现
在repeater控件的ItemDateBound事件中
遍历repeater.controls
然后判断item.itemtype是不是为listitemtype.footer(这里是把分页的几个控件添加到了repeater控件的FooterTemplate里面了
)
例如: Label lab_pagenum = (Label)e.Item.FindControl("lab_pagenum");
这样就可以取到控件;
之后就是在首次加载页面的时候进行droupdownlist的item绑定
之后通过pds.isfristpage进行是否为首页的判断,如果是就需要把上一页和首页的linkbutton禁用了
如果不是首页就设定frantpage.navigateurl="?page=..."通过页面进行传值
同理如果之后进行是否为末页的判断,并进行extpage.NavigateUrl = "Default2.aspx?page="的设定
最后就是进行首页和末页linkbutton的url的设定
最后把droupdownlist的选项索引赋值当前页索引