Inquiridor
percorrer varios CheckBox saber qual selecionado

Pergunta
-
Pessoal!
tenho vários CheckBox em uma pagina uns quinze para ser exato
Gostaria de saber como faço para percorrer estes checkbox para
saber qual esta selecionado, aqui no fórum só encontrei perguntas
das pessoas que queriam saber como percorrer os checkbox dentro
de um GRIDVIEW, não é o meu caso.
tenho uma tabela com varios checkboxs e gostaria de saber qual
esta selecionado para poder inserir o código dentro do meu BD
Maricelmo
- Editado Maricelmo quinta-feira, 22 de maio de 2014 17:30
Todas as Respostas
-
Veja um exemplo fazendo isso em um clique de um botão :
private void button1_Click(object sender, EventArgs e) { foreach (Control item in this.Controls) { if (item is CheckBox) { CheckBox c = item as CheckBox; if (c != null && c.Checked) { MessageBox.Show("MOSTRA NOME DA CHECKBOX SELCIONADA =" + c.Name); } } } }
Ou uma outra maneira mais simples usando Lambda :
foreach (CheckBox item in this.Controls.Cast<Control>().Where(c => c.GetType() == typeof(CheckBox))) { if (item.Checked) { MessageBox.Show("MOSTRA NOME DA CHECKBOX SELCIONADA =" + item.Name); } }
- Editado Daniel Brito br quinta-feira, 22 de maio de 2014 17:46 Adicionando Exemplo
- Sugerido como Resposta Diego Murakami quinta-feira, 22 de maio de 2014 17:49
- Não Sugerido como Resposta Ricardo Barbosa Cortes sexta-feira, 23 de maio de 2014 19:11
-
-
Olá Maricelmo, na web ele não lê desta forma o GetType do controle pq provavelmente seus checkbox está diretamente no html, se possivel coloque em um Panel e veja como ficará simples :
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Panel ID="Panel1" runat="server"> <asp:CheckBox ID="CheckBox1" runat="server" /> <asp:CheckBox ID="CheckBox2" runat="server" /> <asp:CheckBox ID="CheckBox3" runat="server" /> <asp:CheckBox ID="CheckBox4" runat="server" /> <asp:CheckBox ID="CheckBox5" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> </asp:Panel> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </div> </form> </body> </html>
Veja no code behind como é simples no clique do botão :
public partial class WebFormMsdn : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { foreach (Control item in this.Panel1.Controls.OfType<CheckBox>().Where(i => i.Checked)) { Label1.Text += "ID da checkbox selecionada = " + item.ID; Label1.Text += "--------"; } } }
É uma idéia, espero que lhe ajude...
- Sugerido como Resposta GuSouza terça-feira, 27 de maio de 2014 20:13
-
bom dia! Daniel
E obrigado por sua ajuda mas este Codigo não funcionou
pois estou usando visual studio 2005, me desculpe por
não ter mencionado antes
fiz varias tentativas sem sucesso!
Maricelmo
- Editado Maricelmo sexta-feira, 23 de maio de 2014 13:28
-
-
-
-
Olá, não possuo o framework 1 neste momento mas seu code behind desse modo :
foreach (Control item in this.Panel1.Controls) { if (item is CheckBox) { CheckBox c = (CheckBox)item; if (c.Checked) { string nome = c.ID; } } }
E seu aspx assim :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication4.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Panel ID="Panel1" runat="server"> <asp:CheckBox ID="CheckBox1" runat="server" /> <asp:CheckBox ID="CheckBox2" runat="server" /> <asp:CheckBox ID="CheckBox3" runat="server" /> <asp:CheckBox ID="CheckBox5" runat="server" /> <asp:CheckBox ID="CheckBox4" runat="server" /> </asp:Panel> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> </div> </form> </body> </html>
Não funciona ?