/ / ASP.NET DataGrid et la pagination personnalisée - asp.net, datagrid, custompaging

ASP.NET DataGrid et pagination personnalisée - asp.net, datagrid, custompaging

J'essaie d'implémenter un DataGrid dans ASP.NET, et je veux obtenir une pagination personnalisée pour ne pas avoir à fournir toutes les données en une seule fois. J'ai passé plusieurs heures à faire des recherches sur Internet, mais je n'ai rien trouvé d'utile.

Lorsque je regarde la page, je vois le premier ensemble derésultats dans la grille, avec le lien précédent désactivé. Cependant, lorsque je clique sur Suivant, je vois à nouveau la première page de la grille avec le lien précédent désactivé. Lors du débogage du code, j'ai vérifié que le gestionnaire d'événements MyGrid_PageIndexChanged () n'est jamais appelé.

J'ai inclus mon code simplifié ci-dessous. J'ai changé les noms des variables et omis les méthodes pour me concentrer sur le problème de pagination de la grille de données.

Dans le fichier ASPX:

<asp:DataGrid ID="myGrid" runat="server" GridLines="None" UseAccessibleHeader="true" AutoGenerateColumns="false" AllowPaging="true" AllowCustomPaging="true" PageIndexChanged="MyGrid_PageIndexChanged">
<PagerStyle Mode="NextPrev" NextPageText="Next >" PrevPageText="< Previous" />

<Columns>
<asp:BoundColumn HeaderText="Title" DataField="Name" />
<asp:BoundColumn HeaderText="Date" DataField="Date" />
</Columns>
</asp:DataGrid>

Et dans le fichier CS:

    protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
myGrid.PageSize = 20;
myGrid.VirtualItemCount = GetNumItems();
BindMyGrid();
}
}

protected void MyGrid_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)
{
myGrid.CurrentPageIndex = e.NewPageIndex;
BindMyGrid();
}

private int GetNumItems()
{
return 500;
}

private void BindMyGrid()
{
Data[] array = GetDataFromInternetSomehow();
this.myGrid.DataSource = array;
this.myGrid.DataBind();
}

private class Data
{
public string Date { get; set; }
public string Name { get; set; }
}

Toute réflexion à ce sujet serait très appréciée.

Réponses:

8 pour la réponse № 1

Il y a une erreur dans votre ASPX: pour câbler le gestionnaire d'événements PageIndexChanged, utilisez la propriété OnPageIndexChanged (ne pas PageIndexChanged comme dans votre code):

<asp:DataGrid ID="myGrid" runat="server"
OnPageIndexChanged="MyGrid_PageIndexChanged"  /// <--- here"s the error
...

Ensuite, si vous avez AllowCustomPaging = "true", vous devez vous assurer que leLa méthode GetDataFromInternetSomehow () ne renverra que les données de la page actuellement sélectionnée, par ex. passez la page en cours à la méthode et renvoyez uniquement les données correspondantes:

GetDataFromInternetSomehow(e.NewPageIndex);

Sinon, désactivez la pagination personnalisée et cela fonctionnera (mais toutes les données seront chargées à chaque fois).