【发布时间】:2016-06-21 23:33:19
【问题描述】:
我有一个ASP Repeater,其中包含一个标签列表,我想看看哪个标签被选中(选中)。
喜欢:
<HeaderTemplate>
<ul class="tags-list">
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="tag" runat="server" AutoPostBack="true" Text='' />
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
我面临的问题是
protected override void InitializeControls(Telerik.Sitefinity.Web.UI.GenericContainer container, Telerik.Sitefinity.Web.UI.ContentUI.Contracts.IContentViewDefinition definition)
方法在 and 之前被触发:
void tagList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
var item = e.Item.DataItem as Taxon;
var checkbox = e.Item.FindControl("tag") as CheckBox;
checkbox.Text = item.Title;
checkbox.CheckedChanged += new EventHandler(this.checkbox_Changed);
}
}
在我的回调方法之前每次都会被触发:
protected void checkbox_Changed(object sender, EventArgs e)
{
CheckBox tagCheckbox = (CheckBox)sender;
if (tagCheckbox.Checked)
{
}
}
谁能指导我获取复选框状态的最佳做法是什么?
【问题讨论】:
-
tagList_ItemDataBound 如果您在没有 !ispostback 的情况下在 page_load 中对转发器进行数据绑定,则会被触发
-
@Emre:好的,谢谢!但是我如何获得复选框状态?设置数据绑定条件将使 tagList.Items.Count == 0。
-
是否必须在 itemdatabound 中设置 eventhandler?你为什么不在你的复选框中使用
OnCheckedChanged="checkbox_Changed"? -
@Emre:对不起,我想我没明白你的意思。事件处理程序以编程方式设置在
tagList_ItemDataBound -
我的意思是你为什么不使用
<asp:CheckBox ID="tag" runat="server" AutoPostBack="true" Text='' OnCheckedChanged="checkbox_Changed"/>
标签: asp.net checkbox repeater sitefinity sitefinity-5