如何在表格中组合单选按钮?

时间:2013-06-18 08:00:59

标签: c# asp.net radio-button

我正在使用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,但这没有帮助。

1 个答案:

答案 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