Botón de radio HTML dentro del repetidor ASP.NET C #
-
10-07-2019 - |
Pregunta
Estoy tratando de vincular simplemente un botón de opción de entrada HTML dentro de un 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>
El método GetSelectedValue simplemente devuelve una cadena '' marcada '' para que se seleccione el botón de radio, digamos que el repetidor tenía 3 elementos para hacer un bucle y cuando aparece el marcado y, si inspecciono el elemento, veo el valor correcto para el primer botón de radio, es decir, marcado = " verificado " pero en la interfaz de usuario, se selecciona el tercer botón de radio a pesar de que su valor marcado = `` falso '', ¿alguien puede guiarme sobre lo que estoy haciendo mal?
Solución
Pruébalo
<%# (bool)Eval("IsDefaultSelection") ? " checked=\"checked\" " : string.Empty %>
Básicamente, la inclusión en el atributo marcado
está causando que se verifique el RadioButton
. Desea extraerlo para que todo se procese o todo esté ausente.
También tenga en cuenta que todos sus RadioButtons
se llamarán Test1
Puede ser una buena idea utilizar un RadioButton
del lado del servidor.
Otros consejos
El atributo CHECKED en HTML no tiene ningún valor asociado. Solo debe usar este atributo si desea seleccionarlo.
Quieres 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>
De lo contrario, simplemente podría usar los controles de ENTRADA ASP.NET.