2010-06-22 6 views
1

J'ai mon contrôle personnalisé à l'intérieur d'un formulaire. Ce contrôle personnalisé a une variété de propriétés dont l'une est Value que j'essaie de databind.Contrôle personnalisé ASP.NET - DataBinding

En utilisant Container.DataItem Je DataBind mon contrôle, et tout fonctionne:

<fc:Literal runat="server" ID="readState" Label="State:" Value='<%# Container.DataItem("ActivityState") %>' /> 

Puis lorsque je tente de DataBind en utilisant Eval, alors il n'a pas:

<fc:Literal runat="server" ID="readState" Label="State:" Value='<%# Eval("ActivityState") %>' /> 

donne l'erreur :

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

Tout fonctionne bien avec Container.DataItem, donc ma question est: Pourquoi fonctionne Container.DataItem et Eval ne fonctionne pas?

Répondre

2

Eval ne peut être utilisé qu'avec des contrôles basés sur des modèles.

The Eval method evaluates late-bound data expressions in the templates of data-bound controls such as the GridView, DetailsView, and FormView controls. At run time, the Eval method calls the Eval(Object, String) method of the DataBinder object, referencing the current data item of the naming container. The naming container is generally the smallest part of the data-bound control that contains a whole record, such as a row in a GridView control. You can therefore use the Eval method only for binding inside templates of a data-bound control.

1

Vous devez mettre en œuvre/étendre un des contrôles serveur suivants pour obtenir databinding syntaxe d'expression:

Databound contrôle basé sur des modèles: Couple d'articles: http://msdn.microsoft.com/en-us/library/aa478964.aspx http://msdn.microsoft.com /en-us/library/aa479322.aspx

CompositeDataBoundControl: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.compositedataboundcontrol.aspx

DatBoundControl: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.databoundcontrol.aspx

Questions connexes