我正在使用两个嵌套的数据中继器,我想允许对外部中继器进行分页。
这是我到目前为止所做的:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource1" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
<div class="group">
</HeaderTemplate>
<ItemTemplate>
<div class="question"><%#Eval("QText") %></div>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# setQID(Eval("QID"))%>' />
<%-- THE INNER REPEATER--%>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource2">
<HeaderTemplate>
<div class="answer">
</HeaderTemplate>
<ItemTemplate>
<%# (GetAnswer(Eval("AnsQID"))) != 1 ? (displayAnswer(Eval("AText"))) : ""%>
</ItemTemplate>
<FooterTemplate>
</div>
</FooterTemplate>
</asp:Repeater>
<%-- THE INNER REPEATER ENDS HERE--%>
</ItemTemplate>
<FooterTemplate>
</div>
</FooterTemplate>
</asp:Repeater>
我搜索了这个,在各处搜索,并找到了很多方法来解决这个问题。我正在使用LinqDatasources
和两个中继器。这样做的最佳方式是什么?
答案 0 :(得分:2)
要寻找外部中继器,我过去使用了this post中列出的方法。如果您的转发器是嵌套的,我认为它不会对结果产生太大影响。您的内部中继器将计为一行。
中继器虽然对寻呼没有很大的支持。您可以考虑使用ListView(如果使用ASP.Net 3.5或更高版本)或GridView(ASP.Net 2.0或更高版本),它们支持开箱即用的分页。
答案 1 :(得分:1)
我在我的项目中使用了这个控件。
http://www.codeproject.com/KB/custom-controls/CollectionPager.aspx 可选的 http://www.codeproject.com/KB/webforms/SQLPager_For_Everything.aspx
和对于嵌套,您必须使用Databoud事件并绑定子转发器。