Como usar Radio Button em uma GridView Asp.NET

O intuito deste artigo é apresentar de forma consolidada, várias materiais que peguei na web sobre como utilizar um Template Field do tipo RadioButton em um grid do Asp. Net.

Por Programação Pular para comentários
Como usar Radio Button em uma GridView Asp.NET

O intuito deste artigo é apresentar de forma consolidada, várias materiais que peguei na web sobre como utilizar um “Template Field” do tipo RadioButton em um grid do Asp. Net.

Pode parecer simples a utilização deste tipo de controle no grid, porém quando tive que utilizar me deparei com vários problemas e tive grande dificuldade em encontrar em um único lugar a solução para os problemas. Após a solução, que consegui com a ajuda pricipalmente de pessoas do fórum MSDN, resolvi juntar tudo e compartilhar com todos. Espero que este artigo possa ajudá-los.

Criando o Template Field:


Bom, primeiramente vamos adicionar um TemplateFied do tipo RaddionButton no GridView, conforme mostra o código abaixo:


    
        
    
    

 

Selecionando um único radio Button na GridView:


Ao rodar este código vamos nos deparar com o primeiro problema: “É possível selecionar mais de uma opção mesmo definindo a propriedade groupName. Isso ocorre devido a geração dinâmica da propriedade name do controle input renderizado em html. Para haver a seleção de uma única opção a propriedade name dos radiobuttons precisam ser a mesma, criando-se um grupo.” (2009, Thiago Rogério).

Abaixo temos um breve tutorial de como fazer a seleção única do radiobutton no controle gridview.

1. Adicionar a função javascript no código do programa:

function SetUniqueRadioButton(nameregex, current)    
{
   re = new 
   RegExp(nameregex);
   
   for(i = 0; i < document.forms[0].elements.length; i++)
   {
      elm = document.forms[0].elements[i]
      if (elm.type == 'radio')
      {
         if (re.test(elm.name))
         {
            elm.checked = false;
         }
      }
   }
   
   current.checked = true;
}



2. Adicionar um template field no gridview com o controle radiobutton:


    
        
    



3. No evento RowDataBound do gridview adicionar a função javascript no onclick do radiobutton:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{    
    RadioButton rdo = (RadioButton)e.Row.FindControl("RadioButton1");
    
    if (rdo == null)
    {
        return;
    }
    string script = "SetUniqueRadioButton('GridView1.*nomeGrupo',this)";
    rdo.Attributes.Add("onclick", script);
}



Recuperando o índice da linha selecionado com o radio Button na GridView:
Resolvido o problema da seleção única, vamos nos deparar com outra questão, como obter índice de linha (ou mesmo o valor de um campo) selecionada por RadioButton em uma GridView no ASP.NET. Segundo Paulo César Viana, “ tem N maneiras de fazer isto. Uma delas é usar o evento do RadioButton. Quando acionado você vai recuperar o controle e depois um objeto GridViewRow, atravês da propriedade Parent. No GridViewRow vai ter o índice (index)”.
Abaixo segue o exemplo enviado pelo mesmo e que resolve a questão:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>


Página Aspx:





    Untitled Page


    




Code Behind:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Collections.Specialized;
public partial class _Default : System.Web.UI.Page {
    public class Pais {
        public int Codigo { get; set; }
        public string Nome { get; set; }
    }

    protected void Page_Load(object sender, EventArgs e) {
        if (!IsPostBack) {
            List lstPaises = new List();
            lstPaises.Add(new Pais() { Codigo = 1, Nome = "Brasil" });
            lstPaises.Add(new Pais() { Codigo = 2, Nome = "Alemanha" });
            lstPaises.Add(new Pais() { Codigo = 3, Nome = "Pais qualquer" });
            GridView1.DataSource = lstPaises;
            GridView1.DataBind();
        }
    }
    protected void rbtAtivo_CheckedChanged(object sender, EventArgs e) {
        RadioButton rbtAtivo = (RadioButton)sender;
        GridViewRow row = (GridViewRow)rbtAtivo.Parent.Parent;

        Label1.Text = string.Format("Index da linha: {0} | Codigo: {1} , País : {2}", row.RowIndex, row.Cells[0].Text, row.Cells[1].Text);

    }
}



Visualização:

http://www.oficinadanet.com.br//imagens/coluna/3420//aspnet.jpg



Tendo isto dá para trabalhar 100% com o RadioButton da GridView.

Referências:
Thiago Rogério. RadioButton em GridView com seleção única. Disponível em: <link> Acesso em: 27 fev. 2012.

Paulo César Viana. Fórum MSDN. Disponível em: <link>

Compartilhe com seus amigos:
Mais sobre: asp.net, programação
Rafael Reis
Rafael Reis PMP com experiência como Gerente de Projetos e desenvolvimento Web na plataforma .Net. Atualmente é sócio-diretor da empresa Athenas Tecnologia, atuando principalmente nas áreas de Sistemas e Telecomunicações, dos quais foram obtidos sucessos comprovados no uso eficiente de TI para a maximização dos resultados de negócio.
Quer conversar com o(a) Rafael, comente:
Carregar comentários
Últimas notícias de Programação
  • Google usa Mulher-Maravilha para ajudar meninas a programar

    Google usa Mulher-Maravilha para ajudar meninas a programar

    Meninas ganham um incentivo extra na hora de aprender a programar, a Mulher-Maravilha.

  • Criando um cadastro de usuário em Java

    Criando um cadastro de usuário em Java

    O objetivo deste artigo é desenvolver uma aplicação em JSE (Java Standard Edition) de inserção de dados utilizando alguns padrões de projeto.

  • Quer aprender PHP? Saiba mais

    Quer aprender PHP? Saiba mais

    Chegou o tão aguardado curso online de PHP do Oficina da Net. Você não pode perder. PHP é uma das linguagens mais usadas no mundo. Os conteúdos que vou mostrar no curso, são exatamente o que você precisa saber para iniciar sua carreira como programador.

  • Formulário de contato em php

    Formulário de contato em php

    Guia do PHP: Aprenda a fazer um formulário em PHP que envia via SMTP autenticado o e-mail para um destinatário.

  • Como fazer um GIF?

    Como fazer um GIF?

    Aprenda a criar um GIF animado de vídeos. Descubra como criar os GIFs, imagens animadas que você vê em na internet.

  • O que priorizar na hora de escolher o hosting para seu site?

    O que priorizar na hora de escolher o hosting para seu site?

    Com o crescimento das ofertas na web, saiba o que você deve levar em consideração na hora de escolher a melhor empresa de hosting para seu empreendimento

  • O que preciso fazer para criar um aplicativo?

    O que preciso fazer para criar um aplicativo?

    Temos visto que desenvolver aplicativos que visam o mercado mobile pode ser mais que uma alternativa rentável, pode colocá-lo no topo, deixá-lo rico. Mas nem tudo são flores, e o aspirante a desenvolvedor de app precisa seguir algumas regras.

  • WEBINAR 3.9

    WEBINAR 3.9

    Venha para o Maker e descubra como tornar o seu negócio mais competitivo.