Я думаю, что это "дохлый" момент, вызванный тем, что у меня в течение нескольких лет не было разработчика WebForms купола.
У меня есть повторитель, который содержит несколько флажков:
<asp:Repeater EnableViewState="true" ID="IDTypesRepeater" runat="server" OnItemDataBound="IdTypesRepeaterItemDataBound">
<HeaderTemplate/>
<ItemTemplate>
<asp:CheckBox EnableViewState="true" ID="chkIdType" Text="<%# ((KeyValuePair<string,int>)Container.DataItem).Key %>" runat="server" />
<asp:HiddenField ID="idType" Value="<%# ((KeyValuePair<string,int>)Container.DataItem).Value %>" runat="server"/>
<br />
</ItemTemplate>
</asp:Repeater>
Мне нужно получить флажки, выбранные в коде:
foreach (RepeaterItem repeaterItem in IDTypesRepeater.Items)
{
if ( ((CheckBox)repeaterItem.FindControl("chkIdType")).Checked )
{
// Do something
}
}
Но при обратной передаче этот код не работает!Я знаю, что всегда следует привязывать данные к повторителю, поэтому я сделал это:
protected void Page_Load(object sender, EventArgs e)
{
IDTypesRepeater.DataSource = DocTemplateHelper.GetApplicableIDTypes().Where(type => type.Value != 0);
IDTypesRepeater.DataBind();
}
Таким образом, это заново заполняет повторитель, но код обновления никогда не находит никаких отмеченных флажков. Есть идеи?