0

我有一个 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 进行分页。

4

2 回答 2

1

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

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

我想建议您将控件更改RepeaterListView控件

差异:

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

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

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

这是一个简化的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>
于 2012-07-22T09:34:22.913 回答
0

请使用链接http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.pageddatasource.aspx中显示的 PagedDataSource

于 2012-07-22T09:35:56.703 回答