Problema para pegar Radiobutton checkado com LINQ

12/09/2013

Bom dia pessoal,

tenho 4 radiobutton com Groupname "x"

queria pegar eles com LINQ mas não está funcionando no meu WEBFORM

 string radio =  this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked && r.GroupName == "teste").ToString();


sempre me retorna NULL.

alguém sabe como realizar isso, lembrando que não estou utilizando RadioButtonList e é webform?

abs.

Fabiovianna

Respostas

12/09/2013

Joel Rodrigues Currículo

Primeiro verifique se o OfType está retornando os radiobuttons realmente, você pode depurar ou usar o Count() para ver a quantidade.
Pode parecer bobagem, mas verifique se o GroupName está correto.
Responder Citar

12/09/2013

Fabiovianna

ta certinho sim...
mas o OfType retorna 0 no count.

Essa é minha page
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
     <div id="Autenticacao">
            <div id="Login"> 
    <asp:RadioButton ID="RadioButton1" GroupName="teste" Text="1" runat="server" />
    <asp:RadioButton ID="RadioButton2" GroupName="teste" Text="2" runat="server" />
    <asp:RadioButton ID="RadioButton3" GroupName="teste" Text="3" runat="server" />
    <asp:RadioButton ID="RadioButton4" GroupName="teste" Text="4" runat="server" />

    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                </div>
         </div>
</asp:Content>


com o código acima.

abs.
Responder Citar

12/09/2013

Fabiovianna

pelo o q eu to vendo no this ele acha as radioButton, mas no controls não.

porém sem o controls o linq da erro.
Responder Citar

12/09/2013

Fabiovianna

Consegui... Coloquei runat na DIV e coloquei o seguinte código.

string rb = Login.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Checked == true && x.GroupName == "teste").Text[0].ToString();


abs.
Responder Citar

12/09/2013

Joel Rodrigues Currículo

Ah, beleza então. Que bom que deu certo.
Obrigado por compartilhar a solução encontrada.
Estou marcando este tópico como concluído.
Responder Citar