我在datalist中有一个radiobuttonlist控件
<asp:DataList ID="dlfilteritem" runat="server" RepeatDirection="Horizontal"
RepeatColumns="3">
<ItemTemplate>
<asp:RadioButtonList ID="rblfilteritem" runat="server">
</asp:RadioButtonList>
</ItemTemplate>
</asp:DataList>
如何在使用findcontrol的事件中捕获对radiobutton的控制?
答案 0 :(得分:2)
您始终可以使用NamingContainer
属性来获取DataListItem
。然后,您可以使用FindControl
获取对RadioButtonList
。
例如,假设DataList
中的另一个控件像DropDownList
一样发回。如果您想在RadioButtonList
事件处理程序中找到SelectedIndexChanged
:
protected void DropDownList1_SelectedIndexChanged(Object sender, EventArgs e)
{
DropDownList ddl = (DropDownList) sender;
DataListItem dli = (DataListItem) ddl.NamingContainer;
RadioButtonList rblfilteritem = (RadioButtonList)dli.FindControl("rblfilteritem");
}
如果DropDownList
位于DataList
之外,您可以通过Items
property枚举所有DataListItems
:
foreach(DataListItem dli in DataList1.Items)
{
RadioButtonList rblfilteritem = (RadioButtonList)dli.FindControl("rblfilteritem");
}
答案 1 :(得分:1)
如果您在datalist之外有下拉列表,那么您将拥有radiobuttonlist的所有值的数组,因此请尝试以下代码
foreach(DataListItem data in dtdatalist1.Items)
{
RadioButtonList rbl = (RadioButtonList)data.FindControl("rbl");
}
答案 2 :(得分:0)
protected void dlfilteritem_ItemDataBound(object sender, DataListItemEventArgs e) {
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
RadioButtonList RBL = ((RadioButtonList)e.Item.FindControl("PopularCity"));
RBL.DataSource = dataTable;
RBL.DataBind();
}
}