ASP.NET自定义控件 - 数据绑定(ASP.NET Custom Control - DataB

2019-10-23 10:23发布

我有我的自定义控件一个FormView内。 这种自定义控件具有多种特性,其中之一就是Value ,我正在尝试进行数据绑定。

使用Container.DataItem我能数据绑定我的控制,和一切正常

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

然后,当我尝试使用数据绑定Eval ,那么它不会:

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

给出了错误:

数据绑定方法如eval()函数,XPath的(),并绑定()只能在数据绑定控件的上下文中使用。

一切都与workds很大Container.DataItem ,所以我的问题是:为什么Container.DataItem工作, Eval不?

Answer 1:

EVAL只能用模板控制使用。

Eval方法评估在FormView的控制数据绑定控件如GridView,DetailsView和的模板后期绑定数据表达式。 在运行时,Eval方法调用DataBinder的对象的的eval(对象,String)方法,它引用了命名容器的当前数据项。 命名容器通常是包含一个整体的记录,如在GridView控制一个行中的数据绑定控件的最小部分。 因此,您可以使用Eval方法仅用于绑定数据绑定控件的模板内。



Answer 2:

您需要实现/延长下面让数据绑定表达式语法的服务器控件之一:

模板化数据绑定控件:文章夫妇: 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



文章来源: ASP.NET Custom Control - DataBinding