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 ->"
PagerStyle-PrevPageText="<- 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();
}
Leer las respuestas