Por que mover o código do GridView para um ascx, devido à exceção "Expressões de ligação de dados, são suportadas apenas em objetos que possuem um evento DataBinding"?

Eu criei um GridView no código com um DataTable como sua fonte de dados que funcionou bem. Agora mudei a criação do GridView para um arquivo .ascx para facilitar a formatação.

Por algum motivo, isso começou a disparar o HttpParseException:

Expressões de ligação de dados são suportadas apenas em objetos que possuem um evento DataBinding. System.Web.UI.WebControls.HyperLinkField não tem um evento DataBinding.

O que mudou para causar essa diferença e como corrigi-la?

Código original:

// Set up columns for datagrid
var boundField = new HyperLinkField
                    {
                        HeaderText = "Title",
                        DataTextField = MembershipCollection.WebTitleColumnName,
                        DataNavigateUrlFields = new[] { MembershipCollection.WebUrlColumnName },
                        DataNavigateUrlFormatString = "{0}"
                    };

// Set up datagrid
_sitesList = new GridView
                {
                    AutoGenerateColumns = false,
                    AllowPaging = true,
                    PageSize = PageSize,
                    EmptyDataText = "No results",
                    Width = new Unit(100, UnitType.Percentage),
                    CellPadding = 2,
                    PagerSettings =
                        {
                            Visible = true,
                            Mode = PagerButtons.NextPrevious,
                            Position = PagerPosition.Bottom,
                            NextPageText = "Next >",
                            PreviousPageText = "< Previous"
                        }
                };
_sitesList.PagerStyle.HorizontalAlign = HorizontalAlign.Center;
_sitesList.RowDataBound += GridView_RowDataBound;
_sitesList.PageIndexChanging += GridView_PageIndexChanging;
_sitesList.Columns.Add(boundField);

código .ascx:

<asp:ObjectDataSource ID="_sitesDataSource" runat="server"
    SelectMethod="GetSites"
    TypeName="System.Data.DataTable" />
<asp:GridView ID="_sitesGridView" runat="server"
    AutoGenerateColumns="false"
    AllowPaging="true"
    PageSize="<%# this.PageSize %>"
    EmptyDataText="No results"
    width="100%"
    DataSourceID="_sitesDataSource"
    OnRowDataBound="GridView_RowDataBound"
    OnPageIndexChanging="GridView_PageIndexChanging">
    <PagerSettings Visible="true" Mode="NextPrevious" Position="Bottom" NextPageText="Next >" PreviousPageText="< Previous" />
    <PagerStyle HorizontalAlign="Center" />
    <Columns>
        <asp:HyperlinkField
            HeaderText="Title"
            DataTextField="<%# MembershipCollection.WebTitleColumnName %>"
            DataNavigateUrlFields="<%# MembershipCollection.WebUrlColumnName %>"
            DataNavigateUrlFormatString="{0}" />
    </Columns>
</asp:GridView>

questionAnswers(1)

yourAnswerToTheQuestion