Inquiridor
Duplicando valores do CheckBoxList

Pergunta
-
Bom dia!
Pessoal eu tenho um método que quando o usuário clica no check ele já salva no banco, mas estou com um problema.
Por exemplo:
[]Carro
[]Moto
[]Caminhão
Se eu clico no carro já salva no banco, mas quando eu clico também na moto sendo que o carro já esta selecionado salva novamente o caro, ou seja, vou ter duas vezes o carro no banco sendo que selecionei apenas uma vez.
O que faço para que eu selecione os 3 salve cada 1 apensas uma vez?
Consegui explicar?
Abaixo segue meu code:
protected void ckProducts_SelectedIndexChanged(object sender, EventArgs e) { int ComboID = 0; if (hfComboID.Value != "") ComboID = int.Parse(hfComboID.Value); int SchoolID = int.Parse(ddlSchool.SelectedValue); for (int i = 0; i < ckProducts.Items.Count; i++) { int ProductID = Convert.ToInt32(ckProducts.Items[i].Value); if (ckProducts.Items[i].Selected) { lista.Add(Convert.ToInt32(ckProducts.Items[i].Value)); B.Combo obj = new B.Combo(SchoolID, ComboID, (Convert.ToInt32(ckProducts.Items[i].Value)), txtName.Text, int.Parse(valor.ToString())); B.Combo.Save(obj); } }
Todas as Respostas
-
Na verdade você tem que ver a regra que você precisa usar.....ele realmente tem que salvar no banco assim que o check é marcado?
Minha sugestão seria que o usuário confirme os checkbox selecionados no clique de um botão, e então aí sim você percorreria o checkboxlist para verificar quais checks foram selecionados, e faria todos os inserts na mesma operação.
-
-
-
-
Eu tentei e deu esse erro com o i
Error 5 A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'parent or current' scope to denote something else D:\TFS\IASD.ASCS\IASD.ASCS.WebForm\register\combos\Default.aspx.cs 118 34 IASD.ASCS.WebForm
A linha ficou assim:
Era isso que eu devia fazer?
int ProductID = Convert.ToInt32(ckProducts.Items[i].Value); if (lista.Exists(i => ProductID == Convert.ToInt32(ckProducts.Items[i].Value))){
-
Não esse seu List<> ou seja sua lista existe quais campos ? esse i.nomeseucampo
Seria o campo na sua lista que vc deseja comparar com o campo do checkbox entendeu ?
axo que ficaria se na sua lista existir o campo ProductID ficaria assim
if(lista.Exists(i => i.ProductID == ProductID)) //nao salva else //salva
Entende é uma comparação se o id na sua variavel ProductID existe na sua lista.
- Sugerido como Resposta Guilherme da Luz terça-feira, 3 de dezembro de 2013 14:16
-
-
Daniel,
Esta dando esse erro.
Esta falando do i
Error 9 A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'parent or current' scope to denote something else D:\TFS\IASD.ASCS\IASD.ASCS.WebForm\register\combos\Default.aspx.cs 110 34 IASD.ASCS.WebForm
-
Guilherme Obrigada por resposder também, mas o seu esta dando o esmo erro:
Error 9 A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'parent or current' scope to denote something else D:\TFS\IASD.ASCS\IASD.ASCS.WebForm\register\combos\Default.aspx.cs 110 34 IASD.ASCS.WebForm
-
-
-
-
Meu code esta assim:
protected void btnSave_Click1(object sender, ImageClickEventArgs e) { int ComboID = 0; if (hfComboID.Value != "") ComboID = int.Parse(hfComboID.Value); int SchoolID = int.Parse(ddlSchool.SelectedValue); for (int i = 0; i < ckProducts.Items.Count; i++) { int ProductID = Convert.ToInt32(ckProducts.Items[i].Value); if (lista.Exists(check => ProductID == ProductID)) { if (ckProducts.Items[i].Selected) { lista.Add(Convert.ToInt32(ckProducts.Items[i].Value)); string preco = ckProducts.Items[i].Text; string[] separador = new string[] { "R$"}; string[] resultado = preco.Split(separador, StringSplitOptions.None); string valorPreco = null; if (resultado.Length == 2) { valorPreco = resultado[1]; } Sum = Sum + float.Parse(valorPreco); B.Combo obj = new B.Combo(SchoolID, ComboID, (Convert.ToInt32(ckProducts.Items[i].Value)), txtName.Text, decimal.Parse(Sum.ToString())); B.Combo.Save(obj); } } } }
-
-
-
-
-
-
-
-