Salutations!Proper ObjectDataSource Utilisation
Je crée un contrôle utilisateur qui affichera des données dans un contrôle GridView. Nous utilisons une architecture n-tier et les données en question sont extraites de notre base de données et renvoyées en tant que ReadOnlyCollection. OurNewObject est une classe contenant plusieurs propriétés et un constructeur vide qui ne prend aucun paramètre - il se trouve dans l'espace de noms suivant: Acme.ObjectModel.
Dans le contrôle de l'utilisateur, je donne les résultats suivants:
<asp:GridView ID="ourGrid" runat="server" DataSourceID="ourDataSource">
<columns>
<asp:BoundField DataField="Name" HeaderText="Full Name" />
<asp:BoundField DataField="Gender" HeaderText="Gender" />
<asp:BoundField DataField="BirthYear" HeaderText="Year of Birth" />
<asp:BoundField DataField="JoinDate" HeaderText="Date Joined" />
</columns>
</asp:GridView>
<asp:ObjectDataSource ID="ourDataSource" runat="server" SelectMethod="GetTopUsers" TypeName="Acme.Model.OurNewObject">
</asp:ObjectDataSource>
Dans le code de contrôle de l'utilisateur derrière, je la méthode publique suivante:
public ReadOnlyCollection<OurNewObject> GetTopUsers()
{
return (OurDataProxy.GetJustTheTopUsers());
}
Quand je place le contrôle de l'utilisateur sur un Formulaire Web et exécutez-le, j'obtiens le message suivant:
ObjectDataSource 'ourDataSource' n'a pas pu trouver une méthode non générique 'GetTopUsers' qui n'a pas pa rameters.
Mes questions sont les suivantes:
- ce que j'utilise le ObjectDataSource mal?
- Existe-t-il une manière plus appropriée d'utiliser ObjectDataSource dans cette situation?
Merci.
Le problème est que OurNewObject est défini dans un autre assembly, donc je ne peux pas lui ajouter cet attribut. – Bullines
Vous devrez alors vous lier d'une manière différente, juste obtenir la collection et définir la source de données, puis appeler databind à partir du codebehind. –