我在代码中创建了一个 GridView,并使用 DataTable 作为其数据源,效果很好。我现在已将 GridView 创建移至 .ascx 文件中,以使其更易于格式化。
由于某种原因,这已经开始触发 HttpParseException:
数据绑定表达式仅
支持具有
数据绑定事件。
System.Web.UI.WebControls.HyperLinkField
没有 DataBinding 事件。
是什么变化导致了这种差异以及如何修复它?
原始代码:
// 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);
.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>