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 |








en
en
en
en
en
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
Debes recorrer tu DataSet fila por fila, y cargar de ésta manera, si reemplazas el datasource sucederá lo que te está pasando.
Fijate en este post, el mismo usa un dataReader, pero la lógica sería esa.