Mat*_*rts 2 asp.net webforms repeater
我认为这是一个"麻烦"的时刻,因为我几年没有使用圆顶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>
Run Code Online (Sandbox Code Playgroud)
我需要获取后面代码中选中的复选框:
foreach (RepeaterItem repeaterItem in IDTypesRepeater.Items)
{
if ( ((CheckBox)repeaterItem.FindControl("chkIdType")).Checked )
{
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)
但是在回发时,这段代码不起作用!我知道总是数据绑定转发器,所以我做到了这一点:
protected void Page_Load(object sender, EventArgs e)
{
IDTypesRepeater.DataSource = DocTemplateHelper.GetApplicableIDTypes().Where(type => type.Value != 0);
IDTypesRepeater.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
所以这会重新填充转发器,但更新代码永远不会找到任何选中的复选框..任何想法?
绑定在Page_Init事件中
protected void Page_Init(object sender, EventArgs e)
{
IDTypesRepeater.DataSource = DocTemplateHelper.GetApplicableIDTypes().Where(type => type.Value != 0);
IDTypesRepeater.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8533 次 |
| 最近记录: |