none
Seleccionar registro y mostrarlo en DropDawnList RRS feed

  • Pregunta

  • Saludos expertos,

    Tengo un webform con cinco DropDawnList y cuatro textbox y estoy seleccionando el Id de un registro en un Grid para luego realizar una busqueda en la base de datos usando como parametro el Id obtenido del grid. la consulta funciona, he puesto un break point y funciona el proceso, el problema es que solo se cargan los datos en los textbox, en los DropDawnList no se muestran los campos asignados. No se si es que no se deben usar los DropDawnList para estos fines pero agradeceria me orienten un poco. estoy usando sql server 2012, asp.net 2012 con C#. Aqui un poco de código que he usado.

    string id;

            protected void grdIngresos_SelectedIndexChanged(object sender, EventArgs e)
            {  
                id = (grdIngresos.SelectedItems[0] as GridDataItem).GetDataKeyValue("_IdLinea").ToString();
            }

            public void SelectIngresos(int tipo)
            {           
                DataTable dt = new DataTable();
                Limpia();
                
                query = @"SELECT _IdLinea,Anio,Tipo,Concepto,Cuenta,
                       SubCuenta,Auxiliar, PresOriginal,Variacion,Vigente
                          FROM PRE_Tbd_Pres_Ing
                         WHERE _IdLinea = '" + tipo + "' ";
                
                dt = dtSelec(query);
                if (dt.Rows.Count == 0) { Mensaje(); }
                foreach (DataRow dr in dt.Rows)
                {
                    hdfLinea.Value = dr["_IdLinea"].ToString();                
                    ddlAnio.Text = dr["Anio"].ToString();
                    ddlTipo.Text = dr["Tipo"].ToString();
                    ddlConcepto.Text = dr["Concepto"].ToString();
                    ddlCuenta.Text = dr["Cuenta"].ToString();
                    ddlSCuenta.Text = dr["SubCuenta"].ToString();
                    ddlAuxiliar.Text = dr["Auxiliar"].ToString();                
                    ntbOriginal.Text = dr["PresOriginal"].ToString();
                    ntbVariacion.Text = dr["Variacion"].ToString();
                    ntbVigente.Text = dr["Vigente"].ToString();                
                }
            }

    viernes, 1 de abril de 2016 20:03

Respuestas

  • >>He probado con ambas. Pero aun asi no trae nada

    pero validaste que el valor que obtienes en el dr["Tipo"] coincide con algun valor asignado en el DataValueField del DropDownList ?

    recuerda que los items del DropDowList se asignan por medio del DataSource, y si es asi debes indicar que campo usa para el DataValueField

    ddlTipo.DataTextField = "campodesc";
    ddlTipo.DataValueField = "campoid";
    ddlTipo.DataSource = dt;
    
    ddlTipo.DataBind();

    si cargas de esta forma el combo podrasasignar el SelectedValue

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta soyeddygh jueves, 7 de abril de 2016 16:34
    lunes, 4 de abril de 2016 15:46
  • Hola, no lo he probado, pues no tengo tiempo ahorita, pero intenta esto:

    protected void ddlTipo_SelectedIndexChanged(object sender, EventArgs e)

    { DataTable dt = dtSelec(str); ddl.Items.Clear(); ddl.DataSource = dt; ddl.DataTextField = Texto; ddl.DataValueField = Valor; ddl.DataBind(); ddl.Items.Insert(0, "-- Select --"); }

    Solo esta modificado el oren, pero eso afecta.

    No esta de mas y es una prueba rapida.

    Saludos


    lunes, 4 de abril de 2016 16:54
  • Saludos, al final he optado por reemplazar los DropDawnList por ComboBox de Telerik y estos me funcionan a la perfección con la propiedad SelectedValue. Gracias a todos los que aportaron con sus sugerencias y respuestas.
    • Marcado como respuesta soyeddygh jueves, 7 de abril de 2016 16:34
    jueves, 7 de abril de 2016 16:34

Todas las respuestas

  • Proba esto.

    ddlSCuenta.Items.FindByText(dr["SubCuenta"].ToString()).Selected = true;


    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 1 de abril de 2016 20:06
  • hola

    no se como asignas los items al dropdownlist, pero si usaste el DataSource indicando el DataValueField y DataTextField

    deberias usar el SelectedValue

    ddlTipo.SelectedValue = dr["Tipo"].ToString();

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 1 de abril de 2016 21:00
  • Saludos Leandro,

    Ya he intentado con la propiedad SelectedValue, pero no he conseguido mostrar los registros. Es decir, al ejecutar el sitio no presenta ningún error de ejecución pero tampoco carga el registro. Si tienes otra recomendación la agradecería inmensamente. a continuación el código como lo implemente.

    ddlAnio.SelectedValue = dr["Anio"].ToString();
    ddlTipo.SelectedValue = dr["Tipo"].ToString();
    ddlConcepto.SelectedValue = dr["Concepto"].ToString();
    ddlCuenta.SelectedValue = dr["Cuenta"].ToString();
    ddlSCuenta.SelectedValue = dr["SubCuenta"].ToString();
    ddlAuxiliar.SelectedValue = dr["Auxiliar"].ToString();
    ntbOriginal.Text = dr["PresOriginal"].ToString();
    ntbVariacion.Text = dr["Variacion"].ToString();
    ntbVigente.Text = dr["Vigente"].ToString();

    domingo, 3 de abril de 2016 17:11
  • Gracias por responder Federico. Implemente la recomendacion que me presentaste pero me presenta un error en ejecucion. Si conoces otra opcion posible agradeceria la compartieras.

    este es el error que muestra:

    Referencia a objeto no establecida como instancia de un objeto.

    domingo, 3 de abril de 2016 17:14
  • Pregunta, los Dropdownlist tienen elementos creados en ellos?

    Osea si vos lo expandis te muestran algo?


    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 4 de abril de 2016 13:28
  • Si, tiene elementos creados, pero probe a quitarlos para descartar probabilidades y aun asi no logre mostrar los campos asignados con la consulta que presente anteriormente.
    lunes, 4 de abril de 2016 14:04
  • Y la otra pregunta que te hago la selección queda en -1 no? osea te queda en blanco el elemento?

    lo que tenes en la dr es el texto o la value del dropdownlist?


    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 4 de abril de 2016 14:10
  • He probado con ambas. Pero aun asi no trae nada.

    ddlTipo.SelectedValue = dr["Tipo"].ToString();
    ddlConcepto.Text = dr["Concepto"].ToString();

    lunes, 4 de abril de 2016 15:21
  • Nos podes poner un print de como lo ves en la pantalla y una con el menu desplegado?

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 4 de abril de 2016 15:35
  • >>He probado con ambas. Pero aun asi no trae nada

    pero validaste que el valor que obtienes en el dr["Tipo"] coincide con algun valor asignado en el DataValueField del DropDownList ?

    recuerda que los items del DropDowList se asignan por medio del DataSource, y si es asi debes indicar que campo usa para el DataValueField

    ddlTipo.DataTextField = "campodesc";
    ddlTipo.DataValueField = "campoid";
    ddlTipo.DataSource = dt;
    
    ddlTipo.DataBind();

    si cargas de esta forma el combo podrasasignar el SelectedValue

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta soyeddygh jueves, 7 de abril de 2016 16:34
    lunes, 4 de abril de 2016 15:46
  • Saludos, aqui esta el codigo que empleo para la carga de los DropDawnList.

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    Page.Validate();
    //Aqui se llama el metodo para listar los registros del
    //ddlTipo.
                    ListarTipo(); 
                    CargaGrid();
                }           
            }

    //Metodo para poblar el DropDawnList
     public void ListarTipo()
        {
    query = @"SELECT _IdLinea, Tipo, Descripcion
    FROM [PRE_Tbt_Cla_Ing_Gas_Fin]
                    WHERE [Concepto]='' ";

    ddlComun(ddlTipo, query, "Descripcion", "Tipo");
    }

    //Metodo comun para poblar todos los DropDawnList
    public void ddlComun(DropDownList ddl, string str, string Texto, string Valor)
            {
                DataTable dt = dtSelec(str);
                ddl.DataTextField = Texto;
                ddl.DataValueField = Valor;

                ddl.Items.Clear();
                ddl.DataSource = dt;
                ddl.DataBind();

                ddl.Items.Insert(0, "-- Select --");
            }

    //Metodo para conectar a BD, ejecutar la consulta y almacenar resultado
    //en una tabla para luego poblar DropDawnList
    public DataTable dtSelec(String qry, int a = 1)
            {
                SqlDataAdapter da;
                DataTable dt = new DataTable();
                string Cnx = (a == 1) ? Cn : Cu;
                try
                {
                    da = new SqlDataAdapter(qry, Cnx);
                    da.Fill(dt);
                    return dt;
                }
                catch (Exception ex)
                { string Err = ex.ToString(); return null; }
            }

    //Empleo este evento del ddlTipo para cargar otro DropDawnList
    protected void ddlTipo_SelectedIndexChanged(object sender, EventArgs e)
            {
                query = @"SELECT [_IdLinea] Id, [Tipo], [Concepto] Cod, [Descripcion] Nombre
                          FROM [PRE_Tbt_Cla_Ing_Gas_Fin]
                          WHERE [Tipo]=" + ddlTipo.SelectedValue + " AND [Concepto]<>'' AND [Cuenta]=''";

                ddlComun(ddlConcepto, query, "Nombre", "Cod");            
            }

    lunes, 4 de abril de 2016 16:33
  • Hola, no lo he probado, pues no tengo tiempo ahorita, pero intenta esto:

    protected void ddlTipo_SelectedIndexChanged(object sender, EventArgs e)

    { DataTable dt = dtSelec(str); ddl.Items.Clear(); ddl.DataSource = dt; ddl.DataTextField = Texto; ddl.DataValueField = Valor; ddl.DataBind(); ddl.Items.Insert(0, "-- Select --"); }

    Solo esta modificado el oren, pero eso afecta.

    No esta de mas y es una prueba rapida.

    Saludos


    lunes, 4 de abril de 2016 16:54
  • Gracias por tu respuesta. He modificado el orden asi como propones pero sigo sin lograr que se visualice la informacion.
    lunes, 4 de abril de 2016 18:27
  • Pueden notar en esta imagen que los TextBox muestran los datos, pero los DropDawnList no.

    

    lunes, 4 de abril de 2016 18:31
  • podes poner el CargaGrid(); por favor.

    Por favor recuerde &quot;Marcar como respuesta&quot; las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado &quot;tal cual&quot; y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 4 de abril de 2016 18:42
  • Aqui esta el metodo CargaGrid(); y los que intervienen en seleccionar los registros y llenar la tabla.

    //Llenar el GridView con los datos de la tabla seleccionada
    private void CargaGrid()
            {
                string query = @"SELECT _IdLinea,Descripcion,Tipo,Concepto,Cuenta,
                               SubCuenta,Auxiliar,PresOriginal,Variacion,Vigente
                                  FROM Presupuesto.dbo.PRE_Tbd_Pres_Ing";

                LlenarGrid(grdIngresos, query);
            }

    //Asignar la tabla temporal al GridView
    public void LlenarGrid(RadGrid grd, string sql)
            {
                DataTable dt = dtSelec(sql);

                grd.DataSource = dt;
                grd.DataBind();
            }

    //Seleccionar los registros y asignarlos a la tabla temporal
    public DataTable dtSelec(String qry, int a = 1)
            {
                SqlDataAdapter da;
                DataTable dt = new DataTable();
                string Cnx = (a == 1) ? Cn : Cu;
                try
                {
                    da = new SqlDataAdapter(qry, Cnx);
                    da.Fill(dt);
                    return dt;
                }
                catch (Exception ex)
                { string Err = ex.ToString(); return null; }
            }

    lunes, 4 de abril de 2016 19:06
  • Fijate de usar el metodo 

    GridView.RowDataBound

    https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound(v=vs.110).aspx

    hay cuando se aplicaron los datos recorre y asignas el dropdownlist.


    Por favor recuerde &quot;Marcar como respuesta&quot; las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado &quot;tal cual&quot; y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 4 de abril de 2016 19:11
  • Saludos, al final he optado por reemplazar los DropDawnList por ComboBox de Telerik y estos me funcionan a la perfección con la propiedad SelectedValue. Gracias a todos los que aportaron con sus sugerencias y respuestas.
    • Marcado como respuesta soyeddygh jueves, 7 de abril de 2016 16:34
    jueves, 7 de abril de 2016 16:34