ASP.NET - Borrar ultimo registro de un datagrid

 
Vista:

Borrar ultimo registro de un datagrid

Publicado por MARTA (39 intervenciones) el 15/06/2005 16:12:51
Tengo un datagrid con varias páginas, y en cada página varios registros. Desde el datagrid puedo borrar de uno en uno los registros. El problema lo tengo cuando borro el último registro del datagrid que coincide que está solo en la página del grid (porque de momento no tengo más). Entonces me da este error:

Valor CurrentPageIndex no válido. Debe ser >= 0 y < PageCount.

Yo tengo controlado que cuando borro un registro, se cargue otra vez la página y me quede en la misma página del grid donde estaba.

En este caso el registro es único en esa página, y logicamente si borro ese único registro la página del grid desaparece, ¿cómo puedo hacer para irme a la ultima página con registros en este caso? o controlar que si es la última pagina, le reste 1 para ir a la anterior....

no sé cómo hacerlo, ¿alguien me puede ayudar?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Borrar ultimo registro de un datagrid

Publicado por Carlos (2 intervenciones) el 01/08/2005 15:50:22
private void dgDetallePedido_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
// Las variables nPagina y cont se utilizan solo en el caso de que exista paginación en dgDetallePedido
int nPagina = this.dgDetallePedido.CurrentPageIndex;
int cont = nPagina * this.dgDetallePedido.PageSize;
int nLineaDG = int.Parse((e.Item.ItemIndex + cont).ToString());
if (nLineaDG < 0) return;
ds.Tables[0].Rows[nLineaDG].Delete();
this.dgDetallePedido.DataSource = ds;
// Cuando se elimina la última fila de una página del datagrid se produce un error porque no encuentra
// la página correcta, basta con cambiar el CurrenPageIndex
if (nLineaDG == this.dgDetallePedido.PageSize)
this.dgDetallePedido.CurrentPageIndex = 0;
this.dgDetallePedido.DataBind();
}

dgDetellePedido es un datagrid y este evento es para el DeleteCommand.
En nPagina se guarda el número de página en la que estas.
PageSize es el nº de filas mostradas por página (se configura en el Property Builder).
nLineaDG contiene el nº de línea seleccionada incluida la paginación.
ds el es DataSet tuyo.

Espero que te sirva de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar