Pergunta

Eu estou tentando simplesmente ligam um botão de opção de entrada HTML dentro de um repetidor:

<asp:Repeater ID="Outlets" runat="server" >
 <ItemTemplate>
    <input type="radio" name="Proposal" value="Test1" id="Radio1" checked="
<%#`GetSelectedValue(DataBinder.Eval(Container.DataItem,"IsDefaultSelection"))%>" />`

    <label for="Test1">
              <%#DataBinder.Eval(Container.DataItem, "Label")%>
    </label>

  </ItemTemplate>
</asp:Repeater>

O método GetSelectedValue simplesmente retorna um string "marcada" para o botão de rádio para ser selecionado, digamos que o repetidor teve 3 itens para loop e quando a marcação torna e se eu inspecionar o elemento que eu veja o valor correto para a primeira rádio botão ou seja verificada = "verificado", mas na UI o botão 3ª rádio é selecionado, embora o seu valor verificado =, guia alguém "false" pode me sobre o que eu estou fazendo errado?

Foi útil?

Solução

Tentar dar um presente

<%# (bool)Eval("IsDefaultSelection") ? " checked=\"checked\" " : string.Empty %>

Basicamente, a inclusão no atributo checked está causando o RadioButton a ser verificado. Você quer retirá-lo de modo a coisa toda é processado ou a coisa toda está ausente.

Também tenha em mente todas as suas RadioButtons vão ser chamado Test1 Pode ser uma boa idéia usar um RadioButton lado do servidor.

Outras dicas

O atributo check-in HTML não tem valor associado a ele. Você só deve usar este atributo se você quiser selecioná-lo.

Você quer algo como:

<asp:Repeater ID="Outlets" runat="server" >
 <ItemTemplate>
    <input type="radio" name="Proposal" value="Test1" id="Radio1" <%
    if (GetSelectedValue(DataBinder.Eval(Container.DataItem,"IsDefaultSelection"))
        response.write("CHECKED");
%> />
    <label for="Test1">
              <%#DataBinder.Eval(Container.DataItem, "Label")%>
    </label>

  </ItemTemplate>
</asp:Repeater>

Caso contrário, você pode simplesmente usar os controles de entrada ASP.NET.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top