Databinding methods such as Eval(), XPath(), and Bind() …

I’ve spent loads of time Googling to try to work this one out and I’m
sure it’s something obvious.

I get an InvalidOperationException reading “Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control” when I start my page. Unless I’m missing something obvious, this is not the same issue as the “2-way databinding cascading lists” issue (which is linked from everywhere; I kinda wish that were my problem ;o)

I have a templated databound custom server control, that I’ve built with a great deal of help from the two articles by 4GuysFromRolla‘s Scott Mitchell (1, 2).

I don’t seem to be able to use databinding syntax, however:

   <ItemTemplate>
      <asp:TableCell runat="server"><%# Eval("First") %></asp:TableCell>
      ...
   </ItemTemplate>

bound to a List<Pair> gives me an exception:

[InvalidOperationException: Databinding methods such as Eval(), XPath(),
and Bind() can only be used in the context of a databound control.]
   System.Web.UI.Page.GetDataItem() +90
   System.Web.UI.TemplateControl.Eval(String expression) +110
   ASP.owentest_aspx.__DataBind__control8(Object sender, EventArgs e) in
      c:\Projects\Customisation\RedesignProtoTypeWeb\Owentest.aspx:13
   System.Web.UI.Control.OnDataBinding(EventArgs e) +80
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +198
   System.Web.UI.Control.DataBind() +12
   System.Web.UI.Control.DataBindChildren() +214
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +208
   System.Web.UI.Control.DataBind() +12
   System.Web.UI.Control.DataBindChildren() +214
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +208
   System.Web.UI.Control.DataBind() +12
   uSwitch.Web.UI.Lego.RepeatingInputRow.CreateItem(Int32 rowIndex,
      Table container, Boolean useDataBinding, Object rowData) in
      C:\Projects\uSwitch.Web\UI.Lego\InputModule\RepeatingInputRow.cs:361
   uSwitch.Web.UI.Lego.RepeatingInputRow.CreateControlHierarchy(Boolean
      useDataBinding) in
      C:\Projects\uSwitch.Web\UI.Lego\InputModule\RepeatingInputRow.cs:452
   uSwitch.Web.UI.Lego.RepeatingInputRow.DataBind() in
      C:\Projects\uSwitch.Web\UI.Lego\InputModule\RepeatingInputRow.cs:643
   Owentest.Page_Load(Object sender, EventArgs e) in
      c:\Projects\Customisation\RedesignProtoTypeWeb\Owentest.aspx.cs:20
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object
      o, Object t, EventArgs e) +13
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object
      sender, EventArgs e) +45
   System.Web.UI.Control.OnLoad(EventArgs e) +80
   System.Web.UI.Control.LoadRecursive() +49
   System.Web.UI.Page.ProcessRequestMain(Boolean
      includeStagesBeforeAsyncPoint, Boolean
      includeStagesAfterAsyncPoint) +3716

I don’t get the exception if my databinding control is outside the table cell but, for a handful of other reasons, including that my ItemTemplate is being instantiated inside a TableRow, that won’t work for me.

Any ideas gratefully received, as I’m completely lost. If you don’t want to leave thoughts as a comment on here, feel free to email me (owenblacker at uswitch dot com). Cross-posted to and .

Advertisements

Ymatebwch

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s