我有一个asp.net Repeater控件。我必须在转发器中只显示5行。我在谷歌搜索过它,但大部分资源都在讨论如何使用DataSet。就我而言,我使用的是SqlDataSource。 我可以在此Repeater控件中进行分页吗?
ASP.NET代码:
<asp:Repeater ID="Repeater3" runat="server" DataSourceID="SqlDataSource3">
<HeaderTemplate>
<div>
<table border="1">
<thead>
<tr>
<td colspan="3">
<center> <strong>Safety Quizzes Record</strong> </center>
</td>
</tr>
<tr>
<td>
<center> <strong>Quiz Title</strong> </center>
</td>
<td>
<center> <strong>Date & Time</strong> </center>
</td>
<td>
<center> <strong>Score</strong> </center>
</td>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<p>
<%# Eval("Title") %>
</p>
</td>
<td>
<p>
<%# Eval("DateTimeComplete") %>
</p>
</td>
<td>
<p>
<%# Eval("Score") %>
</p>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</div>
</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT dbo.Quiz.Title, dbo.UserQuiz.DateTimeComplete, dbo.UserQuiz.Score
FROM dbo.employee INNER JOIN
dbo.UserQuiz ON dbo.employee.Username = dbo.UserQuiz.Username INNER JOIN
dbo.Quiz ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID
WHERE (dbo.employee.Username = @Username)">
<SelectParameters>
<asp:Parameter Name="Username" />
</SelectParameters>
</asp:SqlDataSource>
更新
我想要的是在Repeater中只显示5个项目,其他项目将在Repeater的其他页面上列出。所以如何如上所述我可以使用SqlDataSource进行Pagining。
答案 0 :(得分:1)
Repeater
控件不支持开箱即用的分页。
但是你可以实现它,但它需要你手动编码。
我建议您更改Repeater
控件的ListView
控件
的差异:
Repeater。如果您需要手动编码这些功能,则此控件不支持分页,更新,插入或删除操作。
ListView。这是所有数据绑定控件中最灵活的。它基于Repeater
和DataList
控件等模板。它支持CRUD操作自动映射数据源控件的操作。它支持服务器分页,您可以自定义几乎所有内容
BTW,由于您使用的是SqlDataSource
,因此您必须手动将分页代码添加到查询或存储过程中,如果使用LinqDataSource
或{{1},则可以更改该行为}}
这是一个简化的EntityDataSource
标记:
ListView
答案 1 :(得分:0)
请使用链接http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.pageddatasource.aspx
中显示的PagedDataSource