2008-11-14 5 views
0

Si vous avez suivi mon précédent postPaging sur le contrôle GridView VS-2008

var filteredUser = from U in collection 
           select new {U.fname,U.lname}; 
      gridView.DataSource = filteredUser; 
      gridView.DataBind(); 

Maintenant, je suis en train de le faire:

  1. Format les noms de colonnes en fonction des propriétés de U. Ainsi, pour exemple si U.fname passe à U.FirstName alors je veux que mon nom de colonne gridview reflète le même

  2. Si j'active la pagination à travers la vue de conception, le code compile mais quand je lance l'application web, il fai ls indiquant « La source de données ne prend pas en charge côté serveur de données radiomessagerie »

Modifier :: Trouvé ce pour l'article # 2 link text

Répondre

1

1) Utilisez-vous AutoGenerateColumns="True" sur votre GridView ou les lier vous-même ? Je pense que (1) fonctionnerait si AutoGenerateColumns est vrai. Vous perdez beaucoup de contrôle sur la façon dont les colonnes sont affichées, mais cela devrait fonctionner. Si vous les liez vous-même, je pense que vous aurez juste besoin de mettre à jour les noms des colonnes liées chaque fois que le nom du champ de données change ou alias le nom dans la clause select pour qu'il reste le même.

var filteredUser = from U in collection 
        select new {FirstName = U.fname, LastName = U.lname}; 

2) Est-ce que votre soutien de collecte IEnumerable<U> ou juste IEnumerable? Je crois que LINQ utilise Skip() et Take() pour prendre en charge la pagination de sorte qu'il devrait prendre en charge l'interface générique énumérable.

+0

ma collection dérive de Collection <> qui si la mémoire me sert correctement implémente IEnumerable <>. Si Linq prend en charge la pagination, dois-je définir

+0

Je pense que le problème est peut-être que vous liez dynamiquement plutôt que de manière déclarative. Ainsi, la source de données n'a aucun moyen de communiquer les paramètres de pagination. Pouvez-vous le modifier pour que vous liez la source de données de manière déclarative? Vous pouvez toujours remplacer le résultat en remplaçant OnSelecting. – tvanfosson

+0

tvanfosson: que voulez-vous dire lier de façon déclarative? créer un objectdatasource et lier cela à ma collection? J'ai une couche dataaccess qui obtient les reccords de la base de données en utilisant la bibliothèque d'entreprise et je veux utiliser ma couche d'accès aux données pour construire mon gridview –