Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luroberto

Substituir if por foreach em CSharp asp.net

Recommended Posts

Boa tarde Amigos,

Tenho o seguinte código que verifica quais os checkboxs estão marcados para efetuar determinadas tarefas de insert no banco :


classeInsert c = new classeDeInsert(); //instancia da classe que possui o método de insert no banco
  
  
  //Faço a verificação em cada checkbox para saber se está marcado
  //Em cada checkbox marcado, chamo o método passando 3 parâmetros que são:
  //Login do usuário selecionado, código da aplicação que é o checkbox marcado e o perfil selecionado
  
  
  if (cbx1.Checked == true)  {
       c.IncluiAcesso(ddlUsuario.SelectedItem.Value, "1", ddl1.SelectedItem.Value); }
	     
  if (cbx2.Checked == true)  {
       c.IncluiAcesso(ddlUsuario.SelectedItem.Value, "2", ddl2.SelectedItem.Value); }
	   
  
  if (cbx3.Checked == true)  {
       c.IncluiAcesso(ddlUsuario.SelectedItem.Value, "3", ddl3.SelectedItem.Value); }	


  if (cbx4.Checked == true)  {
       c.IncluiAcesso(ddlUsuario.SelectedItem.Value, "4", ddl4.SelectedItem.Value); }	   

  if (cbx5.Checked == true)  {
       c.IncluiAcesso(ddlUsuario.SelectedItem.Value, "5", ddl5.SelectedItem.Value); }	

O problema é que o código não está legal utilizando um if para cada verificação, pois se eu incluir 20, 30 checkboxs não será viável efetuar um if para cada um deles.

O que preciso fazer é substiruir os If´s por foreach ou algum outro laço para identificar quais os checkboxs estão marcados . Alguém tem alguma sujestão para me ajudar ?

Obs.: Esses checkboxes estão em um Panel que incluí no form.

Estou utilizando páginas asp.Net C#


Desde já, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia partir do tipo:

foreach(WebControl ctrl in Panel.Controls)
{
  if(ctrl is CheckBox)
  {
    ...
  }
}

Eu fiz na mente, não sei se a sintaxe está certa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Dan Borges, obrigado pela dica.

Seria mais ou menos isso, só que no seu código, verifca apenas se o tipo de controle é um checkbox, mas preciso verificar se é um checkbox, se ele está marcado e talvez, gravar o nome do checkbox em uma lista, para posteriormente verificar todos os itens que foram adicionados na lista para poder utilizá-los.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, checar se o checkbox é marcado é simples:

        foreach(WebControl ctrl in Panel1.Controls)
        {
            if(ctrl is CheckBox)
            {
                if(((CheckBox)ctrl).Checked)
                {
                    //O que você deseja fazer?
                }
            }
        }

A parte da lista não entendi.

Você também pode usar um laço for

        for(int x = 0; x < Panel1.Controls.Count; x++)
        {
            if(Panel1.Controls[x] is CheckBox)
            {
                if(((CheckBox)Panel1.Controls[x]).Checked)
                {
                    //O que fazer?
                }
            }
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.