Контекст
Я собираю шаблонный элемент управления с привязкой к данным. В настоящее время он работает со следующим синтаксисом ...
<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; }
}
}
Со следующей настраиваемой привязкой данных (несвязанный код удален) ...
foreach (object dataItem in dataSource) {
TitleTemplateTableCell title = new TitleTemplateTableCell();
TitleTemplate.InstantiateIn(title); // TitleTemplate is the template property
title.DataItem = dataItem;
title.DataBind();
}