Paginacion en DataGrid

15/09/2006 - 09:38 por Juanma | Informe spam
Hola, tengo un problema con la paginacion de datagrid. Parece ser que el
codigo es correcto pero no me pagina correctamente. Alguien me puede ayudar?

Dejo el codigo aqui.

foro.aspx

<asp:DataGrid id="dgForoMensajes" border=0 runat="server"
AutoGenerateColumns="False"
AllowCustomPaging="True"
PageSize="2"
OnPageIndexChanged="dgForoMensajes_PageIndexChanged"
PagerStyle-Mode="NextPrev"
PagerStyle-NextPageText="Next -&gt;"
PagerStyle-PrevPageText="&lt;- Previous"
PagerStyle-Font-Bold="True">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<table cellspacing="1" cellpadding="1"
width="500" align="center">
<tr>
<td>

</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

codigo en foro.cs

private void Page_Load(object sender, System.EventArgs e)
{
CargarDatos(); //cargar datagrid

}
public void dgForoMensajes_PageIndexChanged(object source,
System.Web.UI.WebControls.DataGridPageChangedEventArgs e)

{

if (IsPostBack==true )

{

dgForoMensajes.CurrentPageIndex=0;

dgForoMensajes.CurrentPageIndex=e.NewPageIndex;

CargarDatos(); //cargar datagrid

}


}

public DataSet DataSetFromDataReader (IDataReader reader)
{
DataSet ds = new DataSet();

// Loop through result sets, creating a DataTable for each
do
{
DataTable schema = reader.GetSchemaTable();
DataTable table = new DataTable();

if (schema != null)
{
// Create a DataTable and add it to the DataSet
for (int i=0; i<schema.Rows.Count; i++)
{
DataRow row = schema.Rows[i];
string name = (string) row["ColumnName"];
DataColumn column = new DataColumn (name,
(Type) row["DataType"]);
table.Columns.Add (column);
}

ds.Tables.Add (table);

// Fill the data table
while (reader.Read())
{
DataRow row = table.NewRow ();
for (int i=0; i<reader.FieldCount; i++ )
row[i] = reader.GetValue (i);
table.Rows.Add (row);
}
}
else
{
DataColumn column = new DataColumn ("RowsAffected");
table.Columns.Add (column);
ds.Tables.Add (table);
DataRow row = table.NewRow ();
row[0] = reader.RecordsAffected;
table.Rows.Add (row);
}
} while (reader.NextResult());

return ds;
}


public void CargarDatos()
{
// Introducir aquí el código de usuario para inicializar la página
OdbcConnection OdbcConn = new
OdbcConnection("driver={MySQL};server=prba;uid=prba;pwd=prba;database=pro");
OdbcCommand OdbcCom = new OdbcCommand("Select * from tblfor order by
idMensaje desc;", OdbcConn);
OdbcConn.Open();
OdbcDataReader myReader = OdbcCom.ExecuteReader();

DataSet Ds= DataSetFromDataReader(myReader);

this.dgForoMensajes.DataSource=Ds;
this.dgForoMensajes.DataBind();

myReader.Close();
OdbcConn.Close();
}

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
15/09/2006 - 12:23 | Informe spam
"Juanma" wrote in message
news:
Hola, tengo un problema con la paginacion de datagrid. Parece ser que el
codigo es correcto pero no me pagina correctamente. Alguien me puede
ayudar?
[...]
private void Page_Load(object sender, System.EventArgs e)
{
CargarDatos(); //cargar datagrid
}



Creo que el error está aqui. Prueba con:

if (!Page.IsPostBack) CargarDatos();


De lo contrario, estás recargando el grid antes de entrar en el
PageIndexChanged (que a su vez lo vuelve a cargar), con lo que se pierde la
página seleccionada.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida