post icon

Cargar un DataGridView a partir de un DataSet/DataTable

El día de ayer veíamos como recorrer un DataReader y rellenar una grilla con sus filas, además de las ventajas y desventajas de cada uno en cada caso, hoy veremos la misma funcionalidad pero a partir de un DataSet que contiene un DataTable.

El código será en su mayor parte el mismo que ayer para comprender con mayor facilidad la diferencia, y sólo variará en la fuente de datos para la grilla.

Recordad que no es necesario en éste caso que generen las columnas en de la grilla, ya que el método DataSource de la grilla se encargará de crear la colección.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//String para cadena de conexion
StringBuilder sCadena = new StringBuilder("");
 
// crear la cadena de conexion
sCadena.Append("Server=SERVIDOR;");
sCadena.Append("Port=PUERTO;");
sCadena.Append("DataBase=BD;");
sCadena.Append("Uid=USUARIO;");
sCadena.Append("Pwd=PASSWORD;");
sCadena.Replace("SERVIDOR", "127.0.0.1");
sCadena.Replace("PUERTO", "3306");
sCadena.Replace("BD", "devtroce");
sCadena.Replace("USUARIO", "usuario");
sCadena.Replace("PASSWORD", "**************");
 
using (MySql.Data.MySqlClient.MySqlConnection connMY = new MySql.Data.MySqlClient.MySqlConnection())
{
	// asignar cadena de conexion
	connMY.ConnectionString = Convert.ToString(sCadena);
	using (MySqlCommand cmdConsulta = new MySqlCommand())
	{
		try
		{
			// setear parametros del command
			cmdConsulta.CommandType = CommandType.Text;
			cmdConsulta.Connection = connMY;
			cmdConsulta.CommandText = "Select * from tabla";
 
			// abrimos la conexion
			connMY.Open();
 
			// instanciamos el adaptador de datos
			MySqlDataAdapter da = new MySqlDataAdapter(cmdConsulta);
			// creamos un dataset que será rellenado a partir del anterior dataAdapter
			DataSet ds = new DataSet();
			// rellenamos
			da.Fill(ds);
			// asignamos a la grilla como datasource, la tabla de indice 0 del datasource creado
			grilla.DataSource = ds.Tables[0];
		} // end try
		catch (Exception ex)
		{
			MessageBox.Show(ex.Message);
		} // end catch
		finally
		{
			connMY.Close();
		} // end finally
	} // end using command
} // end using conexion

Comentarios desde Facebook:

  1. avatar
    fernando ARGENTINA Mozilla Firefox Windows
    30 noviembre 2011 at 13:35 #

    muy bueno pero cuando quiero agregar otra fila la anterior se borra, las filas que agrego son de una tabla de una base de datos que tiene varias columnas. como resolveria ese pequeño problema. pongo el codigo:
    ——————————————————————-
    Conexion con = new Conexion();
    DataSet ds = new DataSet();
    String cadnombre = Convert.ToString(selectnombre.Text);
    SqlDataAdapter adp = new SqlDataAdapter(“SELECT * FROM producto WHERE nombre =”+ cadnombre, con.ConexionBD);

    adp.Fill(ds, “producto”);
    int fil = grdProductosDisp.CurrentRow.Index;
    this.grdProductosDisp.DataSource = ds.Tables[0].DefaultView;
    con.ConexionBD.Close();
    —————————————————————
    por cierto el select lo compara con un dato ingresado de un texbobox

    • avatar
      GeekZero PARAGUAY Google Chrome Windows
      30 noviembre 2011 at 13:46 #

      Debes recorrer tu DataSet fila por fila, y cargar de ésta manera, si reemplazas el datasource sucederá lo que te está pasando.

      1
      
      grilla.Rows.Add(dr.GetInt32(0), dr.GetString(1), dr.GetString(2), dr.GetDateTime(3), dr.GetString(4), dr.GetDateTime(5), dr.GetString(6));

      Fijate en este post, el mismo usa un dataReader, pero la lógica sería esa.

Responder