Como pegar uma lista de checkbok(selecionados) em C#

Bom dia pessoal.

Estou precisando de uma ajudinha , não sei se este fórum seria o mais correto: Tenho uma tela com vários checkbox onde todos os checkbox clicados são armazenados em uma tabela. Ao carregar a tela todos são carregados. O problema está ao salvar, pois o usuário poderá clicar e desclicar qualquer item que desejar e depois salvar. Atualmente ele está removendo todos os itens do banco e salvando novamente o que está deixando muito lento. Pensei em fazer da seguinte forma: 1) Pegar a lista dos selecionados do banco 2) Verificar se o checkbox clicado ( que pode ser uma lista), verificar na lista de selecionados acima se está contido, caso não adicionar. 3) Senão se ele desclicar, remover da lista do banco.

Realmente não estou sabendo como pegar a lista dos que foram clicados ou desclicados naquele momento. Se alguém puder me ajudar.

Desde já grata.

Flávia

Você pode pegar através da classe, cuja classe css chama minha-classe-do-checkbox

$('.minha-classe-do-checkbox input:checked').each(function() {
    console.log($(this).val());
});

Você também pode pegar todos os checkboxes atráves do atributo name

<input type="checkbox" name="meu-nome" value="4" />
<input type="checkbox" name="meu-nome" value="3" />
<input type="checkbox" name="meu-nome" value="1" />
<input type="checkbox" name="meu-nome" value="5" />

$("input:checkbox[name=meu-nome]:checked").each(function(){
    meuArray.push($(this).val());
});

Caso queira pegar sem o nome, basta fazer assim:

$("input:checkbox:checked").each(function(){
    meuArray.push($(this).val());
});

Ou assim dependendo da versão:

$("input[type=checkbox]:checked").each(function(){
    meuArray.push($(this).val());
});

Mike, neste caso você fez com Jquery, estou tentando fazer pelo C#, pois não sei como vou salvar fazendo direto pelo cliente.

Desculpe sou iniciante na linguagem.

Tentei assim:

var Checks = Request.Form.AllKeys.Where(x => x.StartsWith("checkbox")).ToList();
for (int i = 0; i < Checks.Count; i++)
{
	string[] valores = Request.Form[Checks[i].ToString()].Split(';');

	codigoIndicador = Int32.Parse(valores[0]);
	codigoEmpresa = Int32.Parse(valores[1]);

	Materialidade materialidade = new Materialidade() { materialidadePK = new MaterialidadePK() { codIndicador = codigoIndicador, codEmpresa = codigoEmpresa } };


	if (!listaMaterialidade.Contains(materialidade))

	{
		listaMaterialidade.Add(materialidade);
		PersistenceUtils.adiciona<Materialidade>(listaMaterialidade, true);

	}
   else
   {
		listaMaterialidade.Remove(materialidade);
		String sqlRemove = " materialidadePK.codIndicador in ( select 
tipoRelatorioIndicadorPK.codIndicador from TipoRelatorioIndicador where tipoRelatorioIndicadorPK.codTipoRelatorio = " + codTipoRelatorio + ") ";
		PersistenceUtils.removePersonalizado<Materialidade>(typeof(Materialidade), sqlRemove);



	}
}

Obrigada.

Flávia

C# eu não sei :frowning:

Tenta procurar no google assim: get checkbox C# ou get checkbox .NET, talvez você encontre a resposta melhor do que eu, pois de C# eu não sei nada

Está usando qual tecnologia? Se for ASP.NET WebForms, usando CheckBoxList pode tentar isso pra verificar se está checkado:

for (var i = 0; i < checkBoxList1.Items.Count; i++)
{
  var selecionado = checkBoxList1.Items[i].Selected;
}

Dependendo do caso assim fica mais simples: https://stackoverflow.com/questions/18924147/how-to-get-values-of-selected-items-in-checkboxlist-with-foreach-in-asp-net-c

Muito obrigada!!
Flávia