none
Tomar valores de store procedure y pasarlo a un array RRS feed

  • Pregunta

  •   string cadenaConexion = "Data Source=ASISTENTETI\\SQLEXPRESS;Initial Catalog=dbempresarial;Integrated Security=True";

                using (SqlConnection cn = new SqlConnection(cadenaConexion))
                {
                    SqlDataAdapter da = new SqlDataAdapter("store_procedure", cn);
                    DataTable dt = new DataTable();

                    da.SelectCommand.CommandType = CommandType.StoredProcedure;
                    da.SelectCommand.Parameters.AddWithValue("@marca", valor);
                    da.SelectCommand.Parameters.AddWithValue("@fec1", fecinicio);
                    da.SelectCommand.Parameters.AddWithValue("@fec2", fecfin);
                    da.Fill(dt);

                    this.GridView1.DataSource = dt;
                    this.GridView1.DataBind();
                }

    con esto envio 3 parametros y el store procedure me envia los datos y los lleno en un gridview, lo que me gustaría hacer ahora es lo siguiente:
    Ya no deseo que llegue al gridview, sino que en vez de llenarlo a la grilla me permita almacenarlo en un array para usarlo con jqgrid, si tiene alguna otra recomendación estaré agradecido, saludos cordiales.


    Del Castillo Victor Andres - Lima Peru

    viernes, 24 de marzo de 2017 20:37

Respuestas

  • Hola VikDelCastillo,

    Podrías hacer :

    public List<Dictionary<string, object>> ConvertDataTabletoString()
    {
        List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
    
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
    
            SqlDataAdapter adap = new SqlDataAdapter("store_procedure", con);
            adap.SelectCommand.CommandType = CommandType.StoredProcedure;
    
            //Agregamos los parámetros
            adap.SelectCommand.Parameters.AddWithValue("@marca", valor);
            adap.SelectCommand.Parameters.AddWithValue("@fec1", fecinicio);
            adap.SelectCommand.Parameters.AddWithValue("@fec2", fecfin);
    
            DataTable dt = new DataTable();
    
            //Ejecutamos la consulta y la almacenamos en un DT
            adap.Fill(dt);
    
            foreach (DataRow dr in dt.Rows)
            {
                Dictionary<string, object> row = new Dictionary<string, object>();
                        
                foreach (DataColumn col in dt.Columns)
                {
                    row.Add(col.ColumnName, dr[col]);
                }
                rows.Add(row);
            }
            return rows;
        }
    }

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 24 de marzo de 2017 21:32

Todas las respuestas

  • Hola VikDelCastillo,

    ¿En un Array? No sería mejor usar una lista List<MiClase>?

    Aunque teniendo un lista puedes usar el ToArray() para convertirlo a un array.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 24 de marzo de 2017 20:48
  • Quiero lograr tener un codigo parecido a esto para que mi jqgrid funcione, ya que mediante el store procedure no puedo enviarlo directamente al jqgrid. ENLACE EJEMPLO

    COMO PODRIA OBTENER ESTO: 

    public static List<Dictionary<string, object>> ConvertDataTabletoString()

    {
    DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection(connectionString))
    {
    using (SqlCommand cmd = new SqlCommand("select distinct top 1050  name,age,Mobile,City from UserMaster with(nolock)", con))
    {
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);
    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
    Dictionary<string, object> row;
    foreach (DataRow dr in dt.Rows)
    {
    row = new Dictionary<string, object>();
    foreach (DataColumn col in dt.Columns)
    {
    row.Add(col.ColumnName, dr[col]);
    }
    rows.Add(row);
    }
    return rows;
    }
    }
    }
    }
    }

    yo tengo esto : 

    public static List<Dictionary<string, object>> ConvertDataTabletoString()
    {
    DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection(connectionString))
    {
    using (SqlCommand cmd = new SqlCommand("select distinct top 1050  name,age,Mobile,City from UserMaster with(nolock)", con))
    {
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);
    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
    Dictionary<string, object> row;
    foreach (DataRow dr in dt.Rows)
    {
    row = new Dictionary<string, object>();
    foreach (DataColumn col in dt.Columns)
    {
    row.Add(col.ColumnName, dr[col]);
    }
    rows.Add(row);
    }
    return rows;
    }
    }
    }
    }

    }

    nada más

     

    Del Castillo Victor Andres - Lima Peru

    viernes, 24 de marzo de 2017 20:59
  • Hola VikDelCastillo,

    Podrías hacer :

    public List<Dictionary<string, object>> ConvertDataTabletoString()
    {
        List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
    
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
    
            SqlDataAdapter adap = new SqlDataAdapter("store_procedure", con);
            adap.SelectCommand.CommandType = CommandType.StoredProcedure;
    
            //Agregamos los parámetros
            adap.SelectCommand.Parameters.AddWithValue("@marca", valor);
            adap.SelectCommand.Parameters.AddWithValue("@fec1", fecinicio);
            adap.SelectCommand.Parameters.AddWithValue("@fec2", fecfin);
    
            DataTable dt = new DataTable();
    
            //Ejecutamos la consulta y la almacenamos en un DT
            adap.Fill(dt);
    
            foreach (DataRow dr in dt.Rows)
            {
                Dictionary<string, object> row = new Dictionary<string, object>();
                        
                foreach (DataColumn col in dt.Columns)
                {
                    row.Add(col.ColumnName, dr[col]);
                }
                rows.Add(row);
            }
            return rows;
        }
    }

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 24 de marzo de 2017 21:32