From what I've seen this particular error is already pretty well documented, however it is one of the things that Visual Studio is a little misleading about.
Seems this is a lesson why you can't always rely on intellisense to tell you what to type. In a datagrid, the following code will error:
Error:
<EDITITEMTEMPLATE>
<asp:TextBox id=TextBox1 runat="server">
<%# TimeZoneInformation.ToLocalShortDateString(
(DateTime)DataBinder.Eval(Container.DataItem, "FromDate")) %>
</asp:TextBox>
</EDITITEMTEMPLATE>
This will land you with a "'TextBox' cannot have children of type 'DataBoundLiteralControl'." error.
Solution.
<EDITITEMTEMPLATE>
<asp:TextBox id="TextBox1" runat="server"
value='<%# TimeZoneInformation.ToLocalShortDateString(
(DateTime)DataBinder.Eval(Container.DataItem, "FromDate")) %>'>
</asp:TextBox>
</EditItemTemplate>
In this case the "value" tag is valid, even though intellisense doesn't think so.