none
CheckBoxList RRS feed

  • Pergunta

  • Olá a todos!

    Estou com um problema que é o seguinte!

    Tenho um checkBoxList e tenho a parte de gravação no banco! Até ae tudo bem! O problema é na hora que trago a classificacao para o usuario depois que salvei no banco!
    Do jeito que eu fiz o checkBoxList só tras o ultimo checkBoxList checado perdendo o valor dos outros!
    Alguem poderia me ajudar!Segue o codigo!

     

    if ((odr["ID_SUBASSUNTO"].ToString().Trim() != "") && (odr["ID_SUBASSUNTO"].ToString().Trim() != null))
                        {
                            DataTable assuntos = new DataTable();
                            assuntos = ListaSubAssuntos(); - Lista todos os assunto para serem percorridos e comparados com os que foram selecionados e salvos!

                            for (int i = 0; i < assuntos.Rows.Count; i++)
                            {
                                IdSubAssuntoCarrega = assuntos.Rows[i]["ID_SUBASSUNTO"].ToString().Trim();
                                idSubAssunto = odr["ID_SUBASSUNTO"].ToString().Trim();

                                if (IdSubAssuntoCarrega == idSubAssunto)
                                {
                                    cbItem = ((CheckBox)dgitem.FindControl("cbxTatico"));
                                    cbItemEst = ((CheckBox)dgitem.FindControl("cbxEstrategico"));
                                    ((CheckBoxList)dgitem.FindControl("idTemas")).DataSource = assuntos;
                                    ((CheckBoxList)dgitem.FindControl("idTemas")).DataValueField = "Id_SubAssunto";
                                    ((CheckBoxList)dgitem.FindControl("idTemas")).DataTextField = "SubAssunto";
                                    ((CheckBoxList)dgitem.FindControl("idTemas")).EnableViewState = true;
                                    ((CheckBoxList)dgitem.FindControl("idTemas")).DataBind();
                                    ((Panel)dgitem.FindControl("pnlAssuntoTatico")).Visible = true;

                                    cbItem.Checked = true;
                                    cbItemEst.Enabled = false;

                                    CheckBoxList cblRecebe = ((CheckBoxList)dgitem.FindControl("idTemas"));
                                    cblRecebe.Items[i].Selected = true; - O PROBLEMA É NESTA HORA!
                                }

                                if (idSubAssunto == "995")
                                {
                                    cbItem = ((CheckBox)dgitem.FindControl("cbxTatico"));
                                    cbItemEst = ((CheckBox)dgitem.FindControl("cbxEstrategico"));

                                    cbItemEst.Checked = true;
                                    cbItem.Enabled = false;
                                }
                            }
                        }

     

     

    • Movido RicardoAlves sábado, 21 de agosto de 2010 04:06 fórum incorreto (De:Microsoft Dynamics - Geral)
    terça-feira, 29 de junho de 2010 22:51

Respostas

  • Cara não use o dataTable use o dataReader(), e crie um List<> do tipo da tua classe q tem essas propriedades da vc faz assim

    dentro da classe ClasseQueContemAsPropriedades

    public static List<ClasseQueContemAsPropriedades> lista = new List<ClasseQueContemAsPropriedades>();

    dentro do método

    SqlConnection  con = new SqlConnection();

    con.ConnectionString = "tua conexão";

    con.Open();

    string query = teu SELECT * FROM TUA TABELA";

    SqlCommand cmd = new SqlCommand(query, con);

    SqlDataReader dr = cmd.ExecuteReader();

    while(dr.Read())

    {

             ClasseQueContemAsPropriedades objeto = new ClasseQueContemAsPropriedades();

             //PropriedadeParaMarcarOcheckBox que de preferencia boleana para ser melhor de trabalhar

             objeto.PropriedadeParaMarcarOcheckBox = (bool)dr["tua Coluna que recebe o valor q mara o checkBox"];

             lista.Add(objeto);

    }

    dentro do botão q chamar esse metódo voce faz assim

    MetodoParaBaixarValorDoBanco();

    foreach(ClasseQueContemAsPropriedades item int ClasseQueContemAsPropriedades.lista)

    {

                    if(item.PropriedadeParaMarcarOcheckBox == true)

                   {

                                CheckedBoxEscolhido.Checked = true;

                    }

    }

    // e assim vc procegue até terminar

    Att Edney.

    Se for útil por favor marque.

    sábado, 21 de agosto de 2010 14:03

Todas as Respostas

  • Olá,

     

    Estou movendo está thread para o fórum C#. Por favor, qualquer dúvida sobre o assunto poste por aqui...

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me

    Se for útil, por favor marque ;)
    sábado, 21 de agosto de 2010 04:10
  • Cara não use o dataTable use o dataReader(), e crie um List<> do tipo da tua classe q tem essas propriedades da vc faz assim

    dentro da classe ClasseQueContemAsPropriedades

    public static List<ClasseQueContemAsPropriedades> lista = new List<ClasseQueContemAsPropriedades>();

    dentro do método

    SqlConnection  con = new SqlConnection();

    con.ConnectionString = "tua conexão";

    con.Open();

    string query = teu SELECT * FROM TUA TABELA";

    SqlCommand cmd = new SqlCommand(query, con);

    SqlDataReader dr = cmd.ExecuteReader();

    while(dr.Read())

    {

             ClasseQueContemAsPropriedades objeto = new ClasseQueContemAsPropriedades();

             //PropriedadeParaMarcarOcheckBox que de preferencia boleana para ser melhor de trabalhar

             objeto.PropriedadeParaMarcarOcheckBox = (bool)dr["tua Coluna que recebe o valor q mara o checkBox"];

             lista.Add(objeto);

    }

    dentro do botão q chamar esse metódo voce faz assim

    MetodoParaBaixarValorDoBanco();

    foreach(ClasseQueContemAsPropriedades item int ClasseQueContemAsPropriedades.lista)

    {

                    if(item.PropriedadeParaMarcarOcheckBox == true)

                   {

                                CheckedBoxEscolhido.Checked = true;

                    }

    }

    // e assim vc procegue até terminar

    Att Edney.

    Se for útil por favor marque.

    sábado, 21 de agosto de 2010 14:03