Смутился по этому поводу. У меня сложилось впечатление, что если вы добавите серверные элементы управления в ItemTemplate ретранслятора, то идентификаторы, назначенные этим элементам управления, будут сохраняться в течение всех обратных передач, и состояние будет поддерживаться. Но, похоже, этого не происходит. Вот мой ItemTemplate:
<asp:HiddenField ID="hidPending" runat="server" value="<%# DataBinder.Eval(Container.DataItem, "Id")%>" />
<td class="leftpadd"><uc:restrictedtext ID="uclblCategory" runat="server" Width="125" /></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><%# DataBinder.Eval(Container.DataItem, "SelectedOptions")%></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><%# DataBinder.Eval(Container.DataItem, "Price.IncludingTax", "{0:C}")%></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><%# DataBinder.Eval(Container.DataItem, "ExtrasCost", "{0:C}")%></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><%# DataBinder.Eval(Container.DataItem, "Quantity", "{0:000}")%></td>
<td style="border-left:1px solid #528ABD;" class="leftpadd"><asp:CheckBox ID="chkPendingItems" runat="server" /></td>
Который прекрасно заполняет. Я хочу, чтобы пользователь мог выбирать определенные элементы из повторителя, используя флажок, и «обрабатывать» их (т.е. выполнять некоторые операции с данными над этими элементами) при нажатии кнопки, которая находится за пределами повторителя. Вот мой код нажатия кнопки:
Private Sub lnkPendingProcessSelected_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkPendingProcessSelected.Click
For Each rItem As RepeaterItem In rptPendingItems.Items
If rItem.ItemType = ListItemType.Item Or rItem.ItemType = ListItemType.AlternatingItem Then
Dim chk As CheckBox = DirectCast(rItem.FindControl("chkPendingItems"), CheckBox)
If chk.Checked Then
Dim orderItemId As Integer
Dim hid As HiddenField = DirectCast(rItem.FindControl("hidPending"), HiddenField)
orderItemId = CInt(hid.Value)
My.Application.ManagerFactory.OrderManagerInstance.ChangeOrderItemStatus(orderItemId, Concrete.Cms.DataTransferObjects.OrderItemStatus.Processing)
End If
End If
Next
End Sub
Но если вы пройдете через это, флажки будут найдены и назначены правильно, но их атрибут Checked всегда имеет значение False. У кого-нибудь есть предложения относительно того, почему государство не поддерживается и что я могу с этим сделать?