ASP.NET自定义控件 - 数据绑定

时间:2010-06-22 13:20:15

标签: asp.net user-controls

我在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()和Bind())只能在数据绑定控件的上下文中使用。

Container.DataItem所有内容都很好用,所以我的问题是:为什么Container.DataItem有效,而Eval没有?

2 个答案:

答案 0 :(得分:2)

Eval只能与模板化控件一起使用。

  

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

答案 1 :(得分:1)

您需要实现/扩展其中一个服务器控件以获取数据绑定表达式语法:

模板化数据绑定控制: 几篇文章: 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

相关问题