我正在组合一个模板化的数据绑定控件。目前它使用以下语法...
<cc:ItemChooserControl ID="ItemChooser" runat="server">
<TitleTemplate>
<h4><%# DataBinder.Eval(Container.DataItem, "DisplayName") %></h4>
</TitleTemplate>
</cc:ItemChooserControl>
我想要的是,更短,更简单的Eval
会起作用。
<h4><%# Eval("DisplayName") %></h4>
但是当我使用直接Eval时我得到的是一个错误:
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
我正在数据绑定到自定义的HtmlTableCell ...
public class TitleTemplateTableCell: HtmlTableCell, INamingContainer
{
private object m_DataItem;
public virtual object DataItem
{
get { return m_DataItem; }
set { m_DataItem = value; }
}
}
使用以下自定义DataBind(删除了非相关代码)...
foreach (object dataItem in dataSource) {
TitleTemplateTableCell title = new TitleTemplateTableCell();
TitleTemplate.InstantiateIn(title); // TitleTemplate is the template property
title.DataItem = dataItem;
title.DataBind();
}
答案 0 :(得分:0)
HtmlTable单元属于HtmlContainerControl,它不从其他数据控件WebControl所做的常规DataBoundControl继承,例如GridView。因此,您收到此错误;它不是DataBoundControl。