Buena solucion, yo actuamente hago eso asi:
Código:
private void CargarCatalogo()
{
...Lleno mi dataset desde mi fuente de datos.
try
{
dgtCatalogo.DataBind();
}
catch(System.Web.HttpException ex)
{
if(ex.ErrorCode == -2147467259)//Este es el código de un error de páginado
{
dgtCatalogo.CurrentPageIndex -= 1;
dgtCatalogo.DataBind();
}
}
}
En mi caso, cada vez que borro algun elemento llamo a mi funcion CargarCatalogo(), es otra solucion al problema, en este caso, manejando la exepcion, el post contrario, se anticipa a la exepcion, creo que lo correcto es anticiparse en todo caso a la exepción como en el codigo anterior:
Código:
Originalmente escrito por Zafra
private void DgPrueba_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if((DgPrueba.CurrentPageIndex != 0) && (DgPrueba.CurrentPageIndex==DgPrueba.PageCount - 1))
{
DgPrueba.CurrentPageIndex = DgPrueba.CurrentPageIndex - 1;
DataRow[] r = RetornarDatos.Tables[0].Select("Pk1 = '" + DgPrueba.DataKeys[e.Item.ItemIndex] + "'");
if(r.Length==1)
{
r[0].Delete();
}
}
else
{
DataRow[] r = RetornarDatos.Tables[0].Select("Pk1 = '" + DgPrueba.DataKeys[e.Item.ItemIndex] + "'");
if(r.Length==1)
{
r[0].Delete();
}
}
DgPrueba.DataSource=(DataSet)Session["prmDs"];
DgPrueba.DataBind();
}
Saludos.