如何在每个带有序列号的单选按钮列表项目前面显示一个额外的标签?

时间:2011-06-24 05:44:10

标签: asp.net radiobuttonlist

我有一个单选按钮列表,我使用以下代码与数据源绑定,它显示为我想要的结果:

dv.RowFilter = "VoteId = " + grdVote.DataKeys[e.Row.RowIndex].Value;
            rdbList.DataSource = dv;
            rdbList.DataTextField = "VoteOption";
            rdbList.DataValueField = "VoteOptionId";
            rdbList.DataBind();

现在我的问题是如何显示每个单选按钮列表项的字母序列号。在下面的图像中,苹果之前应该是'A',香蕉之前应该是'B'等等.....

extend radio button list to show serial number in front of each radio button list item

1 个答案:

答案 0 :(得分:1)

不幸的是,使用单选按钮列表是不可能的,除非您准备好更改数据源以使文本值前缀为字母(尽管这也不会生成正确的布局)。

一般情况下,我不喜欢单选按钮列表生成的标记(html),并建议使用转发器来获取具有正确语义html的布局。例如,

<asp:Repeater runat="server" ID="optionList">
   <HeaderTemplate><ol class="optionList" type="A"></HeaderTemplate>
   <ItemTemplate> 
     <li>
       <input type="radio" name="VoteList" value='<%# Eval("VoteOptionId") %>' />
       <%# Eval("VoteOption") %>
     </li>
   </ItemTemplate>
   <FooterTemplate></ol></FooterTemplate>
</asp:Repeater>

要访问所选的单选按钮,您可以使用Request.Form["VoteList"]

编辑:如果你必须使用单选按钮,其中一个想法可能是在列表被数据绑定后修改文本。例如,

protected void Page_PreRender(object sender, EventArgs e)
{
    for (int i=0; i < rdbList.Items.Count; i++)
    {
        rdbList.Items[i].Text = Convert.ToChar(65 + i).ToString() + " " + rdbList.Items[i].Text;
    }
}