none
llenar mi datagridview mediante un store procedure con parametro RRS feed

  • Pregunta

  • Buenas estimados, mi duda es la siguiente ya que tengo un problema.

    He creado un gridview, textbox y un button.

    He puesto este código para que me llene el gridview mediante mi store procedure creado en sqlserver enviandole un parametro mediante el textbox (txtot.text), mi problema es que cuando lo ejecuto me manda este error
    <<

    Línea 11: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Línea 12: <asp:Button ID="btnbuscar" runat="server" OnClick="btnbuscar_Click" Text="BUSCAR" /> Línea 13: <asp:GridView ID="GridView1" runat="server" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Width="659px"> Línea 14: </asp:GridView> Línea 15: <asp:SqlDataSource ID="SqlDataSource1" runat="server"></asp:SqlDataSource>

       

       protected void btnbuscar_Click(object sender, EventArgs e)
            {
                string str = "Data Source=ASISTENTETI\\SQLEXPRESS;Initial Catalog=db_compucare;Integrated Security=True";
                SqlConnection conn = new SqlConnection(str);    
                SqlCommand cmd = new SqlCommand("base_asp", conn);
                cmd.Parameters.Add("@ot_cliente", SqlDbType.NVarChar ).Value = txtot.Text;
                conn.Open();
                cmd.ExecuteNonQuery();
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds, "indice");
                this.GridView1.DataSource = ds;
                this.GridView1.DataBind();
                conn.Close();
            }


    Del Castillo Victor Andres - Lima Peru


    miércoles, 15 de marzo de 2017 14:09

Respuestas

  • VikDelCastillo,

    La clase DataGridView no existe dentro del contexto del espacio de nombres Web.UI.WebControls, la clase a la que debes de hacer referencia se llama GridView, la clase DataGridView corresponde al espacio de nombres Windows.Forms específico para crear aplicaciones basadas en Windows. 

    Respecto al código que muestras, debes especificar "que significa" el valor 'base_asp'  que entiendo es un procedimiento almacenado, además que es innecesario ejecutar la consulta dos veces. Considera los siguientes cambios:

    string cadenaConexion = "Data Source=...";
    
    using (SqlConnection cn = new SqlConnection(cadenaConexion))
    {
    	SqlDataAdapter da = new SqlDataAdapter("base_asp", cn);
    	DataTable dt = new DataTable();
    
    	da.SelectCommand.CommandType = CommandType.StoredProcedure;
    	da.SelectCommand.Parameters.AddWithValue("@ot_cliente", txtot.Text);
    
    	da.Fill(dt);
    
    	this.GridView1.DataSource = dt;
    	this.GridView1.DataBind();
    }


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 15 de marzo de 2017 14:24

Todas las respuestas

  • VikDelCastillo,

    La clase DataGridView no existe dentro del contexto del espacio de nombres Web.UI.WebControls, la clase a la que debes de hacer referencia se llama GridView, la clase DataGridView corresponde al espacio de nombres Windows.Forms específico para crear aplicaciones basadas en Windows. 

    Respecto al código que muestras, debes especificar "que significa" el valor 'base_asp'  que entiendo es un procedimiento almacenado, además que es innecesario ejecutar la consulta dos veces. Considera los siguientes cambios:

    string cadenaConexion = "Data Source=...";
    
    using (SqlConnection cn = new SqlConnection(cadenaConexion))
    {
    	SqlDataAdapter da = new SqlDataAdapter("base_asp", cn);
    	DataTable dt = new DataTable();
    
    	da.SelectCommand.CommandType = CommandType.StoredProcedure;
    	da.SelectCommand.Parameters.AddWithValue("@ot_cliente", txtot.Text);
    
    	da.Fill(dt);
    
    	this.GridView1.DataSource = dt;
    	this.GridView1.DataBind();
    }


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 15 de marzo de 2017 14:24
  • tambien solo con esta linea basta 

    dataGridView1.DataSource = dt;

    recuerda siempre utilizar 

    AddWithValue al enviar parametros al Procedimiento
    miércoles, 15 de marzo de 2017 14:40
  • Agradezco la ayuda oportuna, me corregiste de la mejor manera y pude entender el código, gracias.

    Del Castillo Victor Andres - Lima Peru

    miércoles, 15 de marzo de 2017 15:14
  • El comentario anterior me ayudó a solucionarlo, gracias de todas maneras.

    Saludos.


    Del Castillo Victor Andres - Lima Peru

    miércoles, 15 de marzo de 2017 15:15