none
Mostrar datos de SQL en un Gridview ASP .NET SQLDATASOURCE RRS feed

  • Pregunta

  • Hola sucede que tengo un query de SQL y quiero mostrar los valores (registros, resultados) en un gridview, ya hice la consulta select con el SQLDATASOURCE. Mi gran duda es.... que en mi consulta SQL me muestra varios campos relacionados de muchas muchas tablas, pero al final en la condicion me pide datos proporcionados por el usuario asi:

    ...muchos campos de muchas tablas....WHERE (tabla1.Semana = '') AND (tabla2.Codigo_user = '') 

    Cuando ejecuto el query en SQL esos campos los puedo escribir yo pero, para mi aplicacion,

    el codigo_user tiene que ser el codigo con que el se inicio sesion, y el el campo semana tiene

    que ser un numero que ingrese el usuario y la verdad nose como hacerlo.

    Si por ejemplo yo pongo esos datos asi:

    <asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString=

    "<%$ ConnectionStrings:cn %>"SelectCommand="SELECT ...muchos campos

    de muchas tablas....WHERE (tabla1.Semana = '1') 

    AND (tabla2.Codigo_user = '123') 

    pues si me muestra los registros en la tabla pero ese no es el

    caso. Intene poner :

    .WHERE (tabla1.Semana = '')<--un valor introducido

    en un textbox o algo asi

    AND (tabla2.Codigo_user = 'Session['Cod_user']')

    y obviamente no funciono :c. Nose si me doy a

    entender pero tiene que ser algo del lado del

    servidor.

    Gracias

    saludos
        

    viernes, 2 de marzo de 2018 5:37

Respuestas

  • ¿Es necesario usar un SqlDataSource? Puedes hacerlo así sin necesidad de usar un SqlDataSource:

            protected void cargar()
            {
                //Tu cadena de conexion
                string conexion = "*******";
                try
                {
                    conexion.Open();
                    string sql = "SELECT ...muchos campos... where tabla1.Semana=@sem and tabla2.Codigo_user=@cod";
                     SqlCommand cmd = new SqlCommand(sql, conexion);
                    cmd.Parameters.AddWithValue("@sem", TextBox1.Text);//el textbox de donde sacas ese dato
                    cmd.Parameters.AddWithValue("@cod", Session["Cod_user"]);//codigo de inicio de sesion
                     SqlDataReader rdr = cmd.ExecuteReader();
                    GridView1.DataSource = rdr;
                    GridView1.DataBind();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                finally
                {
                    conexion.Close();
                }
            }



    viernes, 2 de marzo de 2018 10:59

Todas las respuestas

  • ¿Es necesario usar un SqlDataSource? Puedes hacerlo así sin necesidad de usar un SqlDataSource:

            protected void cargar()
            {
                //Tu cadena de conexion
                string conexion = "*******";
                try
                {
                    conexion.Open();
                    string sql = "SELECT ...muchos campos... where tabla1.Semana=@sem and tabla2.Codigo_user=@cod";
                     SqlCommand cmd = new SqlCommand(sql, conexion);
                    cmd.Parameters.AddWithValue("@sem", TextBox1.Text);//el textbox de donde sacas ese dato
                    cmd.Parameters.AddWithValue("@cod", Session["Cod_user"]);//codigo de inicio de sesion
                     SqlDataReader rdr = cmd.ExecuteReader();
                    GridView1.DataSource = rdr;
                    GridView1.DataBind();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                finally
                {
                    conexion.Close();
                }
            }



    viernes, 2 de marzo de 2018 10:59
  • Si lo tienes enlazado a un SqlDataSourse una posible solución rápida seria agregar un botón y en el evento Click actualizar la grilla para que tome los datos del TexBox.

    protected void Button1_Click(object sender, EventArgs e)
            {
                GridView1.DataBind();
            }

    Espero te sirva de ayuda.

    Saludos.

    viernes, 2 de marzo de 2018 12:19
  • Hola pues no es necesario usar el sqldatasource, he intentado con tu código pero ahora no me muestra nada :c
    viernes, 2 de marzo de 2018 15:31