我認爲這是一個「衛生署」的時刻引起我沒有幾年圓頂的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