出于某种原因,当我尝试在后面的代码中为其属性分配值时,我的 ASP.NET 标记中的所有对象现在都为空。
我的项目进展顺利,然后当我尝试将数据源分配给 GridView 时,出现空引用错误。
我不知道它为什么这样做。我没有做任何特别的事情。我只是想为页面上的 asp.net 元素的属性分配一个值。智能感知知道该元素在那里,并且在构建项目时我没有收到任何错误。就在我运行网站时,我得到了空引用。
几周以来,我一直在尝试解决此问题。请帮忙。
谢谢。
这是代码:
protected void Page_PreRender(object sender, EventArgs e)
{
LoadData();
}
private void LoadData()
{
Entities context = new Entities();
var types = (from t in context.CustomerTypes
select t).OrderBy(t => t.TypeName);
gvCustomerTypes.DataSource = types;
gvCustomerTypes.DataBind();
}
在标记中,gridview 看起来像这样:
<asp:GridView ID="gvCustomerTypes" runat="server" ShowHeader="true" GridLines="Both"
AutoGenerateColumns="false" AlternatingRowStyle-BackColor="AliceBlue" Width="100%">
<Columns>
<asp:TemplateField HeaderText="Customer Type Name" HeaderStyle-HorizontalAlign="Left"
ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Label ID="lblType" runat="server" Text='<%# Eval("TypeName") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Edit" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" NavigateUrl='<%#Eval("CustomerTypeID", "CreateEditCustomerType.aspx?ID={0}") %>'
Text="Edit" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" CommandName='<%#Eval("CustomerTypeID") %>' OnClientClick="javascript:return confirm('Are you sure you want to delete this Customer Type?');"
OnCommand="DeleteCustomerType" Text="Delete" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>