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

Foi útil?

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.

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