Ayuda con un error de databind

Naima
07 de Marzo del 2006
Hola a todos:

Al final solucionamos el problema de mostrar los datos con el datagrid, y conseguimos que funcione perfectamente, el problema es que ahora hemos hecho otro exactamente igual en otra página y al darle a "siguiente" (lo tenemos paginado) nos da el siguiente error al hacer el databind:

invalid CurrentPageIndex value. It must be >= 0 and < PageCount.

Pero lo fuerte es que el valor de CurrentPageIndex es 1 y el de PageCount es 2, por lo que supongo que el problema estará en otro sitio, pero dónde? asi que por favor, ayudadmeeeee!!!! me estoy volviendo loca, ¿por qué funciona en un sitio y en otro no?

Por si acaso, os mando el código, ok? muchas gracias!

private void dgMensajes_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)
{
this.dgMensajes.CurrentPageIndex = e.NewPageIndex;
SqlConnection conn=new SqlConnection("server=portatil;database=BD_Proyecto;uid=sa;pwd=proyecto");
conn.Open();
SqlDataAdapter cmd = new SqlDataAdapter("select * from TablaForo where categoria='"+this.categoria+"' and id_preguntaForo=0 order by (fecha) desc" ,conn);
DataSet ds = new DataSet();
cmd.Fill(ds,"foro");
this.dgMensajes.DataSource = ds.Tables[0];
this.dgMensajes.DataBind();
conn.Close();

}

geobasis
07 de Marzo del 2006
Sabes que el enlace a Datos (databind) solo lo debes hacer la primera vez que cargas la pagina es decir si no es un PostBack para lo cual debes utilizar la propiedad Page.IsPOstback esta te dice si la pagina se esta recargando a si misma (cuando cambias de pagina) asi que con un
if(!Page.IspostBack){
SqlConnection conn=new SqlConnection("server=portatil;database=BD_Proyecto;uid=sa;pwd=proyecto");
conn.Open();
SqlDataAdapter cmd = new SqlDataAdapter("select * from TablaForo where categoria='"+this.categoria+"' and id_preguntaForo=0 order by (fecha) desc" ,conn);
DataSet ds = new DataSet();
cmd.Fill(ds,"foro");
this.dgMensajes.DataSource = ds.Tables[0];
this.dgMensajes.DataBind();
conn.Close();
}

en el evento Page_Load creo que estaria resuelto tu problema, pero debes asegurarte que la propiedad EnabledViewState de la pagina y del DataGrid esten en true.

Andr?
07 de Marzo del 2006
Con una sintaxis similar a tu caso lo solucione colocando en una rutian que limpiaba los valores las siguientes sentencias
this,dgMensajes.CurrentPageIndex = 0
this.dgMensajes.PageCount.Equals (1)