【问题标题】:How to add paging capabilities to the Repeater control in ASP.Net?如何为 ASP.Net 中的 Repeater 控件添加分页功能?
【发布时间】:2012-07-22 09:25:41
【问题描述】:

我有一个 asp.net 中继器控件。我必须在中继器中只显示 5 行。我在 Google 中搜索过它,但大多数资源都在谈论如何使用 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>

更新:

我想要的是在中继器中只显示 5 个项目,其他项目将在中继器的其他页面上列出。那么我如何才能像上面提到的那样使用 SqlDataSource 进行分页。

【问题讨论】:

  • -1 不要更改已发布答案下的问题。如果您有其他问题,请将其作为新问题发布。
  • 同一个问题。在告诉我应该做什么以及如何使用这个社区之前,请仔细阅读它。
  • 您的标题具有误导性。这意味着您希望只有五行 total 而您真正的问题是如何在转发器控件中启用分页。下次请确保标题与问题相匹配,这样可以节省您的反对票。
  • 阅读问题的第二句,其中明确指出您必须显示五行。我回答了这个问题,并因此而被否决。你可以随心所欲地使用社区,但如果你一直惹恼那些试图帮助你的人,你将得不到多少帮助。

标签: c# asp.net sql-server-2008-r2 sqldatasource


【解决方案1】:

Repeater 控件不支持开箱即用的分页。

您可以实现它,但需要您手动编写代码。

我想建议您将Repeater 控件更改为ListView 控件

区别:

  • Repeater。此控件不支持开箱即用的分页、更新、插入或删除操作,如果您想要这些功能,则需要手动对其进行编码。

  • ListView。这是所有数据绑定控件中最灵活的。它基于RepeaterDataList 控件等模板。它确实支持 CRUD 操作,自动将操作映射到您的数据源控件。它确实支持服务器分页,并且您几乎可以自定义所有内容

顺便说一句,由于您使用的是SqlDataSource,因此您必须手动将分页代码添加到您的查询或存储过程中,如果您使用LinqDataSourceEntityDataSource,则可以更改该行为

这是一个简化的ListView 标记:

    <asp:ListView runat="server" ID="lv"
        DataSourceID="lds" DataKeyNames="emp_id"
        EnableModelValidation="false"
        EnablePersistedSelection="false" 
    >
        <LayoutTemplate>
            <br />
            <br />
            A static header
            <div runat="server" id="itemPlaceHolder"></div>
            <br />
            <asp:DataPager runat="server" PageSize="4">
                <Fields>
                    <asp:NextPreviousPagerField 
                        ButtonType="Button" 
                        ShowFirstPageButton="true"
                        ShowLastPageButton="true"
                    />
                </Fields>
            </asp:DataPager>
        </LayoutTemplate>
        <ItemTemplate>
            <div style="background-color:Gray">
                First Name
                <div><asp:Label runat="server" ID="lbl" Text='<%# Eval("fname") %>'></asp:Label></div>
                <br />
                <asp:GridView ID="GridView1" runat="server" DataSource='<%# Eval("Achivements") %>' />
                <br />
                <asp:LinkButton ID="LinkButton1" Text="Select" CommandName="Select" runat="server" />
                <asp:LinkButton ID="LinkButton2" Text="Edit" CommandName="Edit" runat="server" />
                <asp:LinkButton ID="LinkButton4" Text="Delete" CommandName="Delete" runat="server" />
            </div>
        </ItemTemplate>
        <ItemSeparatorTemplate>
            <hr />
        </ItemSeparatorTemplate>
    </asp:ListView>

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多