2008-11-12 9 views
1

J'ai une application Web qui utilise un magasin de données qui a sa propre pagination intégrée. La classe PagedResult indique le nombre total de pages. Ce que je voudrais le faire (après la liaison de mon ASP.NET GridView) faire:Pouvez-vous "attribuer" la propriété PageCount d'un GridView ASP.NET?

MyGridView.PageCount = thePageCount; 

Et puis ont la magie GridView construire les liens de paginations comme il le ferait normalement si elle était en train de faire lui-même les choses.

Le problème est que "PageCount" est une propriété en lecture seule ... alors, comment puis-je faire cela simplement?

Répondre

2

Pour utiliser la pagination intégrée, GridView interagit avec la source de données. Le GridView a une propriété settable pour PageSize.

Si vous utilisez une ObjectDataSource, vous configurez à la fois un SelectMethod et un SelectCountMethod. Vous pouvez soit modifier votre classe PagedResult pour renvoyer le nombre d'enregistrements au lieu du nombre de pages, soit envelopper l'appel PagedResult dans une méthode pour convertir le nombre de pages en nombre d'enregistrements (PageCount * PageSize).

Si votre classe PagedResult n'existe que pour prendre en charge l'application Web, vous devez envisager de la modifier pour qu'elle se comporte davantage comme une source de données paginée standard.

0

Vous pouvez créer votre propre classe qui étend GridView et remplacer la méthode getter PageCount pour renvoyer la valeur de votre classe PagedResult.

+0

J'ai réfléchi GridView, et il utilise en fait un champ privé ... donc primordial le champ « NbPages » publique en fait ne fonctionnera pas. Bonne pensée cependant. –

0

Utilisez le contrôle ObjectDataSource, liez-le à votre GridView et configurez un gestionnaire pour la propriété SelectCoutnMethod. Vous devrez peut-être écrire un petit objet wrapper pour votre classe qui récupère les données qui s'interface avec le contrôle ObjectDataSource.

Quelques liens pour vous aider:

ObjectDataSource Web Server Control Overview
ObjectDataSource Class

0
 Dim myCount as Integer = 1 'this sets the page count to 1 
     While (oreader.Read()) 
      myCount += 1 'increments once for everytime a item is counted 
      'this sets an array for the items to go into 
      idFname = oreader.GetOrdinal("workCenter") 
      'this retrieves the values at those indices 
      fName = oreader.GetValue(idFname) 
      BulletedList1.Items.Add(fName) 
     End While 

    Catch ex As Exception 
     BulletedList1.Items.Add("No Workcenters Found") 
    Finally 
     oreader.Close() 
     oconn.Close() 
    End Try 
End If 
Me.insertItemForm.PagerSettings.PageButtonCount = myCount 'sets the page count to number of items in gridview or formview etc.