none
checkboxlist ayuda.. recuperar los datos despues que son guardados en una bd RRS feed

  • Pregunta

  • Junto con saludarlos, necesito consejos o ayuda para este caso.

    Resulta que tengo el siguiente

    Tengo lo siguiente

      private void LlenarListaSeleccion()
            {
                CbModalidad();
    
                string Ficha = LblRegNFicha.Text;
    
                var listModal = CargoGrid.LlenarGrModalidad(Ficha);
                Session["datos"] = listModal;
    
                List<GrListaModalidad> ListaModal = Session["datos"] as List<GrListaModalidad>;
    // aca se supone que debe ir los items seleccionados en checkbooklist pero nose como pasarlos//
    }

    para llamar el procedimiento almacenado

            public static List<GrListaModalidad> LlenarGrModalidad(string Ficha)
            {
                List<GrListaModalidad> lista = new List<GrListaModalidad>();
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString()))
                {
    
                    conn.Open();
                    string query = "[sp_CRMICBC_ProspectosNegocios_GrModalidad]";
    
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
    
                    cmd.Parameters.AddWithValue("@Ficha", Ficha);
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        lista.Add(ConvertirGrModalidad(reader, false));
                    }
                }
                return lista;
            }
    
            private static GrListaModalidad ConvertirGrModalidad(IDataReader reader, bool cargarRelaciones)
            {
                GrListaModalidad llenarListModa = new GrListaModalidad();
    
                llenarListModa.items = Convert.ToString(reader["modalidad"]);
                return llenarListModa;
            }

    Se supone q con eso la lista se llema con los 2 items que necesito pero nose como poder pasarlo a cheboxlist para q los seleccione en este caso va el item 1 y 5

    Saludos




    • Editado LatinWater miércoles, 18 de mayo de 2016 16:28 se modifico el titulo
    lunes, 16 de mayo de 2016 20:17

Respuestas

  • Al fin lo puede resolver dejo el codigo fuente para quien lo necesite

            private void LlenarListaSeleccion()
            {
                CargoCbModal();
    
                string Ficha = LblRegNFicha.Text;
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString()))
                {
                    conn.Open();
                    string query = "[sp_CRMICBC_ProspectosNegocios_GrModalidad]";
    
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
    
                    cmd.Parameters.AddWithValue("@Ficha", Ficha);
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        ListItem currentCheckBox = DropModalidad.Items.FindByValue(reader["SUBCOD"].ToString());
                        if (currentCheckBox != null)
                        {
                            currentCheckBox.Selected = true;
                        }
                    }
                    conn.Close();
                }
            }

    Comento algo el codigo

    CargoCbModal();
            private void CargoCbModal()
            {
                DropModalidad.DataSource = CargaCb.LlenarCbModalidad();
                DropModalidad.DataValueField = "SUBCOD";
                DropModalidad.DataTextField = "DESCRIP";
                DropModalidad.DataBind();
            }

    Cargo los items que estan en cheboxlist ---

    string query = "[sp_CRMICBC_ProspectosNegocios_GrModalidad]";

    Llamo al procedimiento almacenado, (SQL) -->

    CREATE PROCEDURE [dbo].[sp_CRMICBC_ProspectosNegocios_GrModalidad]                                  
       (                          
        @Ficha AS VARCHAR(30)                   
       )                          
    AS                                 
      
    SELECT       
       T0.SUBCOD,   
       T0.DESCRIP  
    FROM           
       SUBCOD AS T0   
    INNER JOIN  CRM_FICHAS_MODALIDAD AS T1 ON T0.SUBCOD = T1.modalidad  
    WHERE       
       T0.CODIGO = '35'   
      AND T0.SUBCOD <> '6'   
      AND NUM_FICHA = @Ficha

    Despues paso al While que se encarga de colocar los items que estan seleccionados

    while (reader.Read())
                    {
                        ListItem currentCheckBox = DropModalidad.Items.FindByValue(reader["SUBCOD"].ToString());
                        if (currentCheckBox != null)
                        {
                            currentCheckBox.Selected = true;
                        }
                    }

    con eso tiene la forma de llamar a los cheboklist para que sean seleccionados.

    PD: Si alguien lo puede mejorar, ya que ami los procedimientos me gusta que esten en una clase y de ahi llamarlos y  no el aspx.cs

    Saludos

    LatinWater!



    • Marcado como respuesta LatinWater miércoles, 18 de mayo de 2016 16:27
    • Editado LatinWater miércoles, 18 de mayo de 2016 16:30
    miércoles, 18 de mayo de 2016 16:27

Todas las respuestas

  • Para asignar los valores al checkboxlist vas a tener que recorrer sus itemsy si alguno coincide para marcarlo lo seleccionas

    analiza como trabajo con los check de "estudio"

    [ASP.NET] GridView – Edición Empleados

    veras como primero cargo los items y despues cruzo estos con lo de la entidad tiene asociada y asi marcar las coincidencias

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 17 de mayo de 2016 5:15
  • también viendo tu codigo te recomiendo que si no es estrictamente necesario no guardes la lista de modalidades en Session. Si es algo que vas a usar en tu página localmente deberías emplear ViewState. Lo digo porque almacenar en Session objetos muy grandes y si el numero de usuarios crece, puedes perjudicar el rendimiento del servidor que puede quedarse de momento sin memoria.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 17 de mayo de 2016 6:25
    Moderador
  • Para asignar los valores al checkboxlist vas a tener que recorrer sus itemsy si alguno coincide para marcarlo lo seleccionas

    analiza como trabajo con los check de "estudio"

    [ASP.NET] GridView – Edición Empleados

    veras como primero cargo los items y despues cruzo estos con lo de la entidad tiene asociada y asi marcar las coincidencias

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Gracias por la ayuda.. brindada en este foro

    Resulta leandro mire todo el codigo fuente pero no me resulta

    Esto llevo hasta el momento

    private void LlenarListaSeleccion()
            {
                CargoCbModal();
    
                string Ficha = LblRegNFicha.Text;
                var listModal = CargoGrid.LlenarGrModalidad(Ficha);
                
                GrListItems.DataSource = listModal;
                GrListItems.DataBind();
    
            }

    No se me ocurre como pasarlo al checkbooxList los datos q me arroja ese var listaModal

    Eso me trae una vez que cargo los datos pero lo q no puedo es pasarselo al dropModalidad("Checkbooxlist"), para que me vaya seleccionando el que corresponde

    Saludos

    martes, 17 de mayo de 2016 22:13
  • Hice algunas modificaciones

               foreach (GridViewRow row in GrListItems.Rows)
                {
                   DropModalidad.Items[1].Value = row.Cells[1].Text; 
                }

    Lo no me quiere seleccionar los items que vienen

    Saludos

    miércoles, 18 de mayo de 2016 13:44
  • Al fin lo puede resolver dejo el codigo fuente para quien lo necesite

            private void LlenarListaSeleccion()
            {
                CargoCbModal();
    
                string Ficha = LblRegNFicha.Text;
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString()))
                {
                    conn.Open();
                    string query = "[sp_CRMICBC_ProspectosNegocios_GrModalidad]";
    
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
    
                    cmd.Parameters.AddWithValue("@Ficha", Ficha);
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        ListItem currentCheckBox = DropModalidad.Items.FindByValue(reader["SUBCOD"].ToString());
                        if (currentCheckBox != null)
                        {
                            currentCheckBox.Selected = true;
                        }
                    }
                    conn.Close();
                }
            }

    Comento algo el codigo

    CargoCbModal();
            private void CargoCbModal()
            {
                DropModalidad.DataSource = CargaCb.LlenarCbModalidad();
                DropModalidad.DataValueField = "SUBCOD";
                DropModalidad.DataTextField = "DESCRIP";
                DropModalidad.DataBind();
            }

    Cargo los items que estan en cheboxlist ---

    string query = "[sp_CRMICBC_ProspectosNegocios_GrModalidad]";

    Llamo al procedimiento almacenado, (SQL) -->

    CREATE PROCEDURE [dbo].[sp_CRMICBC_ProspectosNegocios_GrModalidad]                                  
       (                          
        @Ficha AS VARCHAR(30)                   
       )                          
    AS                                 
      
    SELECT       
       T0.SUBCOD,   
       T0.DESCRIP  
    FROM           
       SUBCOD AS T0   
    INNER JOIN  CRM_FICHAS_MODALIDAD AS T1 ON T0.SUBCOD = T1.modalidad  
    WHERE       
       T0.CODIGO = '35'   
      AND T0.SUBCOD <> '6'   
      AND NUM_FICHA = @Ficha

    Despues paso al While que se encarga de colocar los items que estan seleccionados

    while (reader.Read())
                    {
                        ListItem currentCheckBox = DropModalidad.Items.FindByValue(reader["SUBCOD"].ToString());
                        if (currentCheckBox != null)
                        {
                            currentCheckBox.Selected = true;
                        }
                    }

    con eso tiene la forma de llamar a los cheboklist para que sean seleccionados.

    PD: Si alguien lo puede mejorar, ya que ami los procedimientos me gusta que esten en una clase y de ahi llamarlos y  no el aspx.cs

    Saludos

    LatinWater!



    • Marcado como respuesta LatinWater miércoles, 18 de mayo de 2016 16:27
    • Editado LatinWater miércoles, 18 de mayo de 2016 16:30
    miércoles, 18 de mayo de 2016 16:27