Foros del Web » Programación para mayores de 30 ;) » .NET »

Añadir un registro en un Grid sin utilizar DataSet

Estas en el tema de Añadir un registro en un Grid sin utilizar DataSet en el foro de .NET en Foros del Web. Yo se que puedo llenar un grid con cualquier clase que implemente la interfase IList. Actualmente utilizo el DataTable del DataSet para llenar un grid, ...
  #1 (permalink)  
Antiguo 23/10/2006, 09:33
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Añadir un registro en un Grid sin utilizar DataSet

Yo se que puedo llenar un grid con cualquier clase que implemente la interfase IList.
Actualmente utilizo el DataTable del DataSet para llenar un grid, pero para yo ñadirle un registro al grid, tengo primero que añadirle el registro al DataTable y esto se me refleja en el Grid.

Sucede que tengo declarar el DataTable como publico para todo el formulario para que cuando yo añada un registro al DataTable, este registro se vea en el Grid. A mi me parece que esto es consumir doblemente memoria, porque tengo los datos cargados en el DataTable y los datos cargados en el Grid.

Además, si yo declado un DataTable privado en una subrutina, cuando el DataTable se destruye los datos siguen en el Grid, es por esto que creo que tener los datos en un DataTable público para todo el formulario y en grid es doble consumo.

¿Existe alguna forma de añadir un registro a un directamente en el grid sin tener que hacerlo en el DataTable?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 25/10/2006, 13:24
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
con un DataReader le especificas la consulta que quieras con un command, despues haces la lectura, posteriormente vas agregando el registro por columna, logico que vas a asignar la columna "n" del grid con la columna "n" que hayas obtenido del reader.
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #3 (permalink)  
Antiguo 25/10/2006, 13:29
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Cita:
...posteriormente vas agregando el registro por columna...
¿Cuál es el código para agregar los registros columna por columna?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #4 (permalink)  
Antiguo 25/10/2006, 15:30
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
haber agarrate del sillon por que este es el codigation, asi como te habia explicado era en VB6.0 asi que ahorita ya cambio, espero te funcione esto:

SqlCommand comando = new SqlCommand("TU_COMANDO", conexion);
SqlDataReader lector;
BindingSource buscar = new BindingSource();
try
{
conexion.Open();
lector = comando.ExecuteReader();
lector.Read();
buscar.DataSource = lector;
dataGridView1.DataSource = buscar;
}
catch (SystemException ex)
{
MessageBox.Show(ex.Message, "Error");
}
finally
{
if (conexion != null)
{
conexion.Close();
}
}



espero funcione
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #5 (permalink)  
Antiguo 26/10/2006, 06:25
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
erick_arcini, de la forma que me dices, como quiera se le está pasando algo al DataSource. No es lo que quiero hacer.

Te plantearé el siguiente escenario. En una subrutina tienes el algoritmo para llenar un grid que tiene 3 columnas y lo llenas con 5 registros. Luego quieres agregar 1 registro más al grid y los datos que agregar son: 6, "Pedro" y "Activo".
El 6 es el valor de la primera columna, "Pedro" el valor de la segunda columna y "Activo" el valor de la tercera columna.

¿Cómo agregar ese registro al grid?
Nota: No puedes grabar el dato en la base de datos para luego asignarle el valor al DataSource.

Por último y para que te quede más claro de lo que quiero hacer, en VB6 lo que yo hacía para agregar un registro al FlexGrid sin llenarlo de la base de datos era:
Código:
Grid.Rows = Grid.Rows + 1 'Añade una nueva línea al Grid
Grid.TextMatrix(Grid.Rows -1, 1) = "6"
Grid.TextMatrix(Grid.Rows -1, 2) = "Pedro"
Grid.TextMatrix(Grid.Rows -1, 3) = "Activo"
¿Cómo harías algo parecido en .NET?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #6 (permalink)  
Antiguo 26/10/2006, 12:06
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Eso me lo hubieras especificado antes, ya que yo nunca utilizo un dataset, y eso era lo que segun tu estabas pidiendo, pero aqui esta el dato, espero sea eso

int contador = 1;//numero de columnas a insertar
//aqui estoy usando datos directos, pero tu los puedes insertar como gustes, la longitud de tu arreglo puede ir de cualquier tamaño pero, si es de tamaño 3 y solo tienes 2 columnas se insertan los primeros dos datos

string[] datosAinsertar ={"erick_arcini","prueba 1"};

dataGridView1.Rows.Add(contador);//insertamos n filas
dataGridView1.Rows.Add(datosAinsertar); //insertamos los datos


solo me falta ahi algo como para insertar un dato en la posicion(2,3) o (5,1) algo por el estilo, pero ya tienes lo esencial, espero sea esto
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #7 (permalink)  
Antiguo 26/10/2006, 12:13
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Excelente, lo voy a probar, gracias!
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #8 (permalink)  
Antiguo 26/10/2006, 12:40
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
private void cargaEnCeldas(DataGridViewRow fila, int columna, string datos)
{
fila.Cells[columna].Value = datos;
}

te dejo esta funcion de ejemplo para que carges en (x,y)
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:41.