我认为这是一个“卫生署”的时刻引起我没有几年圆顶的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();
}
所以这个重新填充转发器,但更新代码永远不会发现任何选中的复选框。任何想法?
是的 - 这是完成了工作..几乎。我在页面加载的其他地方也有一个厚脸皮的“Page.DataBind”,我需要删除这是导致问题,所以摆脱这似乎也排序所有:) –
我从来没有过一个很好的经验的Page.DataBind。给它几年前提供:) – TheGeekYouNeed