이 게시물이 길게 보인다면 죄송합니다.동일한 리피터의 ItemTemplate에서 다음/이전 버튼을 사용하여 리피터 리 바인딩
중첩 된 중계기가있는 상위 중계기가 있습니다.
제 문제는 내 중계기 (rptTabContent)와 내부 중계기를 리 바인드하기 위해 '다음'및 '이전'버튼을 사용하려고하지만 ItemCommand 이벤트 중 이러한 링크의 상태를 조작하려고 할 때 바인드로 덮어 씁니다.
그래서 '다음'또는 '이전'링크를 클릭 한 후 데이터가 없으면 버튼을 비활성화하거나 활성화 할 수 없습니다.
중첩 된 repeater는 7 개의 열에 1 주분의 데이터를 표시합니다. 다음 버튼은 다음 주 데이터와 이전 주 데이터를 표시합니다. 처음에는 이전 버튼이 비활성 상태입니다.
부모 리피터는 처음에는 데이터 테이블을 포함하는 4 개의 div를 반복하기 때문에 다시 바인딩됩니다. 하나의 리피터에서 다음 버튼 하나가 눌려지면 모든 테이블에 다음 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
가 어떻게 내 '다음'과이 conditons에서 '이전'링크를 관리 할 수 있습니다.
많은 감사
감사 답장을 아주 많이. 저는 게시 이후이 작업을하고 있으며 여러분이 제안한 것과 동일한 조치를 취했습니다. 긴 게시물임을 응답 해 주신 것을 감사드립니다. – w4ymo