Comment puis-je lier un ASP.NET FormView à un seul enregistrement?

Le but de l'ASP.NET contrôle FormView est pour afficher un seul enregistrement à la fois. Alors, comment puis-je lier à un seul enregistrement? Il se plaint de ce que

Source de données est un type non valide. Il doit être un IListSource, IEnumerable ou IDataSource.

Je peux envelopper mon objet dans une liste si c'est la seule solution. Dans cette application, la FormView est à l'intérieur d'un contrôle par l'utilisateur et je suis à la récupération de l'objet dans une méthode publique, c'est à dire que je ne suis pas à l'aide d'un contrôle de source de données. Je ne suis pas le faire toutes les 2 voies de liaison de données de plus ici, je suis le seul à l'aide de la FormView dans ce cas, pour conserver un aspect cohérent.

Si je suis allé par le livre et lié à un FormView à une source de données qui a retourné une liste d'enregistrements, serait-il en fait de récupérer tous les enregistrements et juste afficher uniquement les enregistrements sélectionnés?

Voici ce que j'ai fini par mettre en place dans une classe utilitaire:

public static IEnumerable<T> WrapInEnumerable<T>(T item)
{
    return new T[] {item};
}
  • Quand j'ai essayé d'appliquer cela sur mon Linq2Sql entité-il encore jeté l'erreur lors de la conversion d'un tableau. J'ai essayé Sani Huttunen Liste<> idée et cela a fonctionné.
  • GOTCHA: Si vous êtes un réglage manuel de l' .Propriété source de données, puis ne pas oublier le .DataBind() sur la ligne suivante! Gauche moi de me gratter la tête pendant quelques minutes lorsque j'ai été confronté à pas d'erreur mais pas de données affichées. Évident, avec le recul, mais j'ai l'habitude d'utiliser ObjectDataSource de sorte qu'il n'était pas instictive pour moi
  • J'ai juste utilisé moi-même avec une petite différence. J'ai tourné dans une extension de la méthode par changement de T item à this T item. Merci pour la bonne idée avec cette.
InformationsquelleAutor Jamie Ide | 2009-07-13