0

我正在使用嵌套中继器在表中动态构建单选按钮列表:

 <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 设置为静态,但这没有帮助。

4

1 回答 1

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;
    }
}

注释:

好的 - 找到单选按钮,并且可以更改它们的属性,但它们仍然独立工作。

恐怕这是一个已知的错误

看看这个问题以获得进一步的帮助:asp.net 单选按钮分组

于 2013-06-18T08:11:50.087 回答