Repeater(foreach)用于对绑定数据源中的数据进行遍历并按格式显示,每条数据以什么格式显示是由Repeater的<ItemTemplate>来决定的,模板会多次显示,就像foreach, ItemTemplate 中相当于{}中的语句。<ItemTemplate>
姓名:<%#Eval(“Name”)%><b>年龄:<%#Eval(“Age”)%></b><br /></ItemTemplate>。注意:%和#中间不能有空格。<%#Eval("Name")%>表示在这个位置显示当前实体对象的Name属性,注意调用Eval、Bind这些数据绑定方法的
时候要用#。
因为Eval就是将属性显示到指定的位置,因此也可以显示到文本框中<ItemTemplate>姓名: <asp:TextBox runat = "server" Text='<%#Eval("Name") %>' /> </ItemTemplate>注意不要写成Text="<%#Eval('Name') %>" 因为<%%>中的是C#代码,''是字符,而不是字符串还可以用在服务器控件中<asp:TextBox Text='<%#Eval("Name") %> 'runat= "server"> </asp:TextBox>
ItemCommand
可以在模板中放置Button控件(Button、LinkButton、ImageButton),模板中的按钮一般不写OnClick事件响应,而是响应Repeater的ItemCommand事件。为Button控件设定CommandName、CommandArgument属性,然后在ItemDataBound事件读取e的CommandName、CommandArgument属性就可以获得发生事件的命令和行参数了。如果对数据进行了操作,则需要Repeater1.DataBind()来重新绑定,从数据库中刷新最新的数据。
ListView的高效率分页
增加取得所有数据条数的方法QueryCount,增加取得指定行数范围数据的方法GetPagedData:
select * from (SELECT ......,Row_Number() over(order by ...) rownum FROM T_Links) t where t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows。
注意:1、不要用Id做分页的字段,断号,“不要让主键参与逻辑运算”。2、一定要有一个排序规则。
由于数据集编辑器不支持(不是运行时不支持,只是设计器不会自动帮我们生成一些东西) Row_Number() ,所以创建完成后需要手动在GetPagedData属性的Parameters中增加两个参数:startRowIndex、maximumRows(参数名必须是这两个,这是由ObjectDataSource的StartRowIndexParamterName、 MaximumRowsParamterName确定的,一般不需要改。),都是Int32类型。也可以自己写BLL进行封装。
select top @PageSize from t where id not in (select top @pagesize*(page-1)) from t)
ObjectDataSource中EnablePaging属性设置为true,SelectCountMethod()设置(获得总行数的方法) SelectMethod(int startIndex,int pageSize)设置(获得分页数据的方法):注意要在数据源控件配置参数名称一致
如果出错的话看看是不是没有放置内置的DataPager或者外置的DataPager的PagedControlID没有指向ListView。
修改ObjectDataSource的EnablePaging="True",SelectCountMethod设置为取得行数的方法。
DataPager默认是用PostBack机制,显示不到地址中,不利于网友间共享,只要指定QueryStringField属性(比如pagenum)就可以
实现超链接形式的分页链接
高效率分页步骤总结(步骤多,不难)
1、增加一个返回总条数的方法GetCount。目的是告诉一共有多少条数据,这样才知道显示到第几条为止。。
2、增加一个返回指定页数的方法:提供这个方法才能知道怎么取特定的区间。
select t.* from(SELECT Id, Name,Row_Number() over(order by Id) rownum FROM dbo.T_Persons) t where t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows手工添加这两个参数startRowIndex、maximumRows参数
3、配置ObjectDataSource的时候SElect方法选择“GetpagedData”,才知道调用哪个方法取区间的数据
4、将ObjectDataSource的设置EnablePaging="true",表示启用自定义分页。才知道使用自定义的分页策略
(经常容易忘了设置)。设定 SelectCountMethod="GetCount"属性,指向总条数的方法。才知道调用哪个方
法取总条数。
5、因为ObjectDataSource会自动传这两个参数的值,所以SelectParameters中的
<asp:Parameter Name="startRowIndex" Type="Int32" /> <asp:Parameter Name="maximumRows" Type="Int32" />
两个参数删掉。
6、配置ListView的时候不要忘了启用分页。如果是使用外置DataPager的话不要忘了设置PagedControlId属性。
分析执行过程,参数是怎么传过去的。