我正在使用nester转发器动态构建表格中的单选按钮列表:
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lblAccID" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("name") %>'></asp:Label>
</td>
<td>
<%-- POPULATE CONDITION RADIO BUTTONS --%>
<asp:Repeater ID="rpConditionRadioButtons" runat="server">
<ItemTemplate>
<td>
<asp:RadioButton ID="rbCondition" GroupName="gCondition" Text="" runat="server" />
</td>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
但我无法弄清楚如何将它们组合在一起。 (因为该表是动态构建的,我认为我不能使用单选按钮列表。)
我尝试使用GroupName属性,并将ClientIDMode设置为Static,但这没有帮助。
答案 0 :(得分:0)
如果您嵌套转发器,则您还有一个具有唯一标识符(例如主键)的父RepeaterItem
。您可以在内部转发器的GroupName
中动态地将其附加到ItemDataBound
属性。您可以通过以下方式从内部转发器的RepeaterItem
访问外部转发器的当前ItemDataBound
(假设lblAccID.Text
包含ID):
protected void rpConditionRadioButtons_ItemDataBound(Object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater innerRepeater = (Repeater)sender;
RepeaterItem outerItem = (RepeaterItem)innerRepeater.NamingContainer;
Label lblAccID = (Label)outerItem.FindControl("lblAccID");
RadioButton rbCondition = (RadioButton) e.Item.FindControl("rbCondition");
rbCondition.GroupName = "gCondition_" + lblAccID.Text;
}
}
评论:
确定 - 找到单选按钮,可以更改其属性,但是 他们仍然独立工作。
我担心这是known bug。
请查看此问题以获得进一步的帮助:asp.net radio button grouping