Как я могу показать дополнительную метку перед каждым пунктом списка переключателей с серийным номером? - PullRequest
0 голосов
/ 24 июня 2011

У меня есть список переключателей, который я связываю с источником данных следующим кодом, и он показывает желаемый результат для меня:

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 Ответ

1 голос
/ 24 июня 2011

К сожалению, со списком переключателей это будет невозможно, если вы не готовы изменить свой источник данных, чтобы иметь текстовые значения с префиксом букв (хотя это также не будет генерировать правильный макет).

В общемЯ не фанат разметки (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;
    }
}
...