この投稿が長蛇の列になっているようでしたら申し訳ありません。
ネストされたリピーターを持つ親リピーターがあります。
私の問題は、「次へ」ボタンと「前へ」ボタンを使用してリピーター(rptTabContent)を再バインドしようとしているため、内部リピーターも再バインドしようとしていますが、ItemCommandイベント中にこれらのリンクの状態を操作しようとすると、練る。
そのため、「次へ」または「前へ」のリンクをクリックした後にデータがない場合、ボタンを無効または有効にすることはできません。これは、私がやろうとしていることです。
ネストされたリピーターは、7列に1週間分のデータを表示します。次のボタンは、次の週のデータと前の週のデータを表示するためのものです。最初は、前のボタンは非アクティブです。
親リピーターは、最初はそれぞれがデータのテーブルを含む4つのdivをループアウトするため、再びバインドされます。1つのリピーターで次のボタンを1つ押すと、すべてのテーブルに次の7日間のデータが表示される必要があります。
各リピーターには、まったく同じ数のアイテムがあります。
最初にページロード時に、すべてのデータが正しくバインドされます。
コレクションの最初のアイテムと最後のアイテムの日付がわかっているので、親リピーターにバインドする必要のあるオブジェクトの日付範囲を計算できます。
HTMLは以下のとおりです
<asp:Repeater ID="rptTabContent" runat="server" OnItemCommand="rptTabContent_ItemCommand">
<ItemTemplate>
<div id="<%# Eval("SlotTypeUrl") %>" class="delivery-timetable-container">
<table cellpadding="0" cellspacing="0" border="0">
<asp:Repeater ID="rptDeliverySlots" runat="server">
<ItemTemplate>
<tr class="time-slots">
<th><asp:Label id="lblRowTime" runat="server"></asp:Label></th>
<asp:Repeater ID="rptDeliverySlot" runat="server">
<ItemTemplate>
<td id="tdDay" runat="server">
<cc1:RepeaterRadioButton id="rptrdoDeliverySlot" groupname="del-times" runat="server" />
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</ItemTemplate>
</asp:Repeater>
<tr>
<td colspan="8"> </td>
</tr>
<tr>
<td colspan="4">
<div class="eco-rollover">
<div>
<img src="icon.gif" />
</div>
</div>
</td>
<td colspan="4">
<asp:LinkButton id="lnkPreviousWeek" enabled="false" runat="server" commandargument="Previous" cssclass="inactive">< Previous week</asp:LinkButton>|
<asp:LinkButton id="lnkNextWeek" runat="server" commandargument="Next" cssclass="active" >Next week ></asp:LinkButton>
</td>
</tr>
</table>
</div>
</ItemTemplate>
</asp:Repeater>
私のItemCommandイベントはここにあります:
Protected Sub rptTabContent_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs)
If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem)
Dim filteredProposedDeliveries As New List(Of ProposedDeliverySlotDTO)
Dim firstDate, lastDate As Date
Dim startDate, endDate As Date
If (Session("FirstDeliveryDate") IsNot Nothing) AndAlso (Session("LastDeliveryDate") IsNot Nothing) Then
firstDate = CType(Session("FirstDeliveryDate"), Date)
lastDate = CType(Session("LastDeliveryDate"), Date)
Select Case e.CommandArgument.ToString()
Case "Next"
'Get new startDate using firstDate and store to use next time
'disable next button if startDate > lastDate
Case "Previous"
'Get new startDate from current displayed date and overright stored startdate
'disable previous button if startDate < firstDate
End Select
endDate = startDate.AddDays(7)
End If
'filteredProposedDeliveries = Get object between startDate and EndDate
Dim slots As List(Of SlotType) = PrepareSlotsForBinding(filteredProposedDeliveries)
Dim rptTabContent As Repeater = CType(e.Item.BindingContainer, Repeater)
rptTabContent.DataSource = slots
rptTabContent.DataBind()
End If
End Sub
これらの条件下で「次へ」および「前へ」のリンクを管理するにはどうすればよいですか。
どうもありがとう