0 votes

ASP.Net liaison de données dans la balise

Je sais que vous pouvez lier dans le code-behind, mais je ne comprends pas tout à fait comment cela fonctionne si vous souhaitez le déclarer dans la balise des contrôles. Cela concerne une collection personnalisée.

Je pensais que c'était simplement

Datasource="<%# MyCollection %>"

Où MyCollection est une propriété exposée de la classe dans le code-behind?

MyCollection{ get{ return \_MyCollection;}}

Quelque chose comme ça. Mais cela ne semble pas fonctionner de cette manière, donc ne peut-on pas lier de cette façon, ou est-ce que je manque quelque chose?

0voto

Dewfy Points 11277

Clarifiez quel contrôle vous utilisez. Quoi qu'il en soit - <%# %> - c'est juste un moyen de dire que vous voulez extraire des données d'un conteneur lié aux données. Mais dans votre cas ce n'est pas le cas (vous n'avez pas de conteneur externe).

Pour résoudre votre problème, il vous suffit d'assigner lors du chargement de la page

MyControl.Datasource = MyCollection

0voto

Spyros Points 308

La propriété 'DataSource' ne peut pas être définie de manière déclarative. Y a-t-il une vraie raison de le faire au lieu de lier dans le code-behind ?

La manière alternative de faire cela est d'utiliser le DataSourceID au lieu de DataSource pour le définir de manière déclarative. Le DataSourceID doit être l'ID d'un contrôle de type IDataSource comme SqlDataSource. Vous devez créer un contrôle personnalisé qui implémente cette interface et le fournir en tant que source de données, mais encore une fois je ne vois pas de réelle bonne raison de le faire.

0voto

bgs264 Points 1280

Vous devriez être en mesure de faire ce que vous avez dit, oui.

http://support.microsoft.com/kb/307860

Je pense que ce que vous avez manqué est ceci (cité du lien ci-dessus):

Après que les sources de données particulières ont été déterminées et définies pour les objets de la page .aspx, vous devez lier les données à ces sources de données. Vous pouvez utiliser la méthode Page.DataBind ou la méthode Control.DataBind pour lier les données aux sources de données.

De ce que je me souviens, je pense que vous n'avez pas à le faire, si vous voulez avoir un contrôle lié aux données dans un contrôle lié aux données - par exemple, des répéteurs imbriqués. Dans cette situation, je pense que définir la DataSource suffit, mais je peux être corrigé?

Jetez un coup d'œil, à la section intitulée "Page.DataBind() versus Control.DataBind()"

Une autre page avec des exemples est ici:
http://odetocode.com/articles/278.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X