c# Lista de dados ASP.NET e botões de opção HTML
-
11-12-2019 - |
Pergunta
Meu site tem controle de mudança de idioma então quando um idioma é clicado eu recarrego a mesma página mas com texto em idioma diferente, e se o usuário já tiver campo no formulário tenho que recarregar os dados.
Consegui recarregar os dados em caixas de seleção, caixa de texto, mas não com botão de rádio
Por favor veja meu código
Eu tenho uma lista de dados e um botão de opção dentro.
<asp:DataList runat="server" ID="dlRole">
<ItemTemplate>
<input type="radio" id="rblRole" name="rblRole" value='<%# Eval("RoleCode") %>' />
<asp:Label ID="lbRole" runat="server" Text='<%# Eval("Description")%>'></asp:Label>
</ItemTemplate>
</asp:DataList>
Eu carrego a lista de dados, botões de opção
dlRole.DataSource = ...
dlRole.DataBind();
Eu salvo o valor do botão de opção no objeto de sessão do usuário
user.Role = Request["rblRole"];
mas quando eu recarrego o objeto salvo no botão de opção, ele não consegue encontrar o controle do objeto do botão de opção....o botão de opção é sempre NULL.e não sei por que
foreach (DataListItem item in dlRole.Items)
{
HtmlInputRadioButton radio = (item.FindControl("rblRole") as HtmlInputRadioButton);
if (radio != null) <--- always nulll
{
if (radio.Value == user.Role.ToString())
{
radio.Checked = true;
}
else
radio.Checked = false;
}
}
Por favor, deixe -me saber como consertar isso, obrigado
Solução
Você precisa adicionar
runat="server"
em seu botão de opção, caso contrário, ele não estará acessível no Code Behind.