Foros del Web » Programando para Internet » ASPX (.net) »

Agregar Filas a un DataTable

Estas en el tema de Agregar Filas a un DataTable en el foro de ASPX (.net) en Foros del Web. Hola foro, al parecer es una pregunta sencilla :S, pero no he podido resolverla,ojala me puedan ayudar. Tengo un DropDownList, un Boton y un gridview, ...
  #1 (permalink)  
Antiguo 05/05/2013, 15:12
Avatar de AndreaEstrada  
Fecha de Ingreso: noviembre-2012
Ubicación: Torreón
Mensajes: 54
Antigüedad: 11 años, 5 meses
Puntos: 0
Agregar Filas a un DataTable

Hola foro, al parecer es una pregunta sencilla :S, pero no he podido resolverla,ojala me puedan ayudar. Tengo un DropDownList, un Boton y un gridview, el usuario seleeciona un elemnto de la lista de DropDownList y al presionar el boton se agrega al grid, bueno en teoria asi deberia de ser, el grid view lo lleno por medio de un DataSource de la Datatable:

DataTable tabla = new DataTable();
tabla.Columns.Add("elemento");
tabla.Columns.Add("Fecha");
//Este codigo esta en el evento click del Boton
DataRow fila = tabla.NewRow();
fila["Fecha"] = Calendario1.Fecha.ToString();
fila["Directorado"] = "Este es un ejemplo del directorado";
tabla.Rows.Add(fila);
GridView1.DataSource = tabla;
GridView1.DataBind();
//Fin de Boton

Mi problema es que selecciono el primer elemento y no hay problema pero al seleccionar un segundo me pierde el primero y solo me agrega el actual elemento, como lo hago para que no se pierdan los elemento en la dataTable?? me imagino que es por el postback pero no he podido hasta el momento reolverlo...
__________________
"La verdadera clave de la grandeza es ser en verdad lo que aparentamos ser" -Sócrates
  #2 (permalink)  
Antiguo 06/05/2013, 05:53
 
Fecha de Ingreso: abril-2013
Ubicación: Toledo
Mensajes: 9
Antigüedad: 11 años
Puntos: 1
Respuesta: Agregar Filas a un DataTable

Efectivamente el problema es que cada vez que haces un postback la grid vuelve a cargar los datos originales y pierdes lo que has añadido previamente. Tienes varias opciones para solventar el problema.

Puedes verificar que no sea un postback para cargar la grid
Código:
If not IsPostback then
'carga aqui tu grid
end if
Otra opción es insertar el registro en el origen de datos en vez de hacerlo sobre la grid o utilizar un datatable intermedio, yo sin duda me quedo con verificar si es un postback o la carga inicial de la pagina aunque sin ver el codigo completo no te sabria decir cual es la mejor solución.

Un saludo
  #3 (permalink)  
Antiguo 29/05/2013, 15:39
Avatar de murdoc92  
Fecha de Ingreso: mayo-2012
Ubicación: Santiago
Mensajes: 58
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Agregar Filas a un DataTable

Eso te sucede porque los valores de los controles se almacenan en el ViewState de la página pero todos los demás valores usados en el servidor se pierden entre postback por lo que tendrían que recargarse o usar valores de sesión. Te dejo el código usando sesiones.

// esto dentro de un handler load de la página
if (!IsPostBack)
{
DataTable tabla = new DataTable();
tabla.Columns.Add("elemento");
tabla.Columns.Add("Fecha");
DataTableDatos = tabla;
GridView1.DataSource = DataTableDatos;
GridView1.DataBind();
}

// esto dentro del handler del boton
DataRow fila = DataTableDatos.NewRow();
fila["Fecha"] = Calendario1.Fecha.ToString();
fila["Directorado"] = "Este es un ejemplo del directorado";
tabla.Rows.Add(fila);
GridView1.DataSource = DataTableDatos;
GridView1.DataBind();

// Propiedad (creala dentro de la clase)
private DataTable DataTableDatos
{
get
{
if (Session["dataTableDatos"] == null)
Session["dataTableDatos"] = new DataTable();
return (DataTable)Session["dataTableDatos"];
}
set
{
Session["dataTableDatos"] = value;
}
}


Saludos.

Etiquetas: datatable, filas, gridview
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 12:01.