如何在RadioButtonList之间添加项目?

时间:2014-01-28 14:14:27

标签: asp.net

我们有一个生成服务器端的列表,然后使用<asp:RadioButtonList...来显示它。

然而,我们如何在其中一个项目之后添加一些HTML?

这个想法是,如果生成其中一个,就会生成一些“子”单选按钮。

由于

ASP.NET:

private void PopulateFollowUpRadioButtons(Order order)
        {
            //Based on the options selected while creating the order template populate the radio button list.
            if (order.OrderTemplate.fur01Visible)
                FolloupRadioButtonList.Items.Add(new ListItem(order.OrderTemplate.fur01Label, "1"));
            if (order.OrderTemplate.fur02Visible)
                FolloupRadioButtonList.Items.Add(new ListItem(order.OrderTemplate.fur02Label, "2"));
            if (order.OrderTemplate.fur03Visible)
                FolloupRadioButtonList.Items.Add(new ListItem(order.OrderTemplate.fur03Label, "3"));


            //If follow up option is already selected then select the option in the Follow Up Radio button control 
            if (order.FollowUpRoleId != null)
                FolloupRadioButtonList.SelectedValue = order.FollowUpRoleId.Value.ToString();
        }


<asp:RadioButtonList ID="FolloupRadioButtonList" CssClass="black" ForeColor="Black"  runat="server"></asp:RadioButtonList>

2 个答案:

答案 0 :(得分:5)

创建您自己的自定义radiobuttonlistcontrol:

Namespace Controls
    Public Class MyRadioButtonList
        Inherits RadioButtonList

        Protected Overrides Sub RenderItem(itemType As System.Web.UI.WebControls.ListItemType, repeatIndex As Integer, repeatInfo As System.Web.UI.WebControls.RepeatInfo, writer As System.Web.UI.HtmlTextWriter)
            writer.Write("<div>Extra content</div>")
            MyBase.RenderItem(itemType, repeatIndex, repeatInfo, writer)
        End Sub
    End Class

End Namespace

并使用它。

首先将控件注册到页面或用户控件:

<%@ Register Assembly="(projectnamespace)" Namespace="(projectnamespace).Controls" TagPrefix="cc1" %>

然后使用控件:

<cc1:MyRadioButtonList ID="rdolist" runat="server" />

这是服务器端的基本radiobuttonlistcontrol,所以就像现在一样使用它。

答案 1 :(得分:1)

从技术上讲,您可以直接将您的HTML分配到ListItem文字,例如这段代码

 ListItem li = new ListItem("aaaaa", "aaaaa");
 FolloupRadioButtonList.Items.Add(li);

 li = new ListItem("bbbbb", "bbbbbbb");
 FolloupRadioButtonList.Items.Add(li);

 li.Text += @"<table style='padding-left:50px'>
                        <tr>
                            <td><input id='ChildList_0' type='radio' name='ChildList' value='zzzzzzz' /><label for='ChildList_0'>zzzzzzz</label></td>
                        </tr>
                        <tr>
                            <td><input id='ChildList_1' type='radio' name='ChildList' value='xxxxxxx' /><label for='ChildList_1'>xxxxxx</label></td>
                        </tr>
              </table>";

将生成此列表和子列表:

Sub radibuttonlist

但它不是真正的服务器端控制。如果您只需要客户端访问此列表 - 此方法可能适合您。否则,正如我在评论中提到的那样 - 考虑一个用户控件,您可以在其中使用ASP.NET表和RadioButtons构建自己的层次结构。