C# 数据列表标题模板导致';对象引用未设置为对象的实例';错误
我有一个数据列表,我想重复项目,并为我正在处理的应用程序使用自动(行交替)颜色。我正在尝试在项目模板上方添加一个标题模板,如下所示C# 数据列表标题模板导致';对象引用未设置为对象的实例';错误,c#,asp.net,webforms,C#,Asp.net,Webforms,我有一个数据列表,我想重复项目,并为我正在处理的应用程序使用自动(行交替)颜色。我正在尝试在项目模板上方添加一个标题模板,如下所示 <table> <asp:DataList ID="DataList1" runat="server" CellPadding="4" DataKeyField="num" DataSourceID="SqlDataSource1" ForeColor="#333333" OnItemDataBound="DataList1_ItemDataBou
<table>
<asp:DataList ID="DataList1" runat="server" CellPadding="4" DataKeyField="num" DataSourceID="SqlDataSource1" ForeColor="#333333" OnItemDataBound="DataList1_ItemDataBound">
<AlternatingItemStyle BackColor="White" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<ItemStyle BackColor="#EFF3FB" />
<HeaderTemplate>
<tr>
<th>Item Name</th>
<th>Item Type</th>
<th>Item Price</th>
<th>End(s) In</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><a class="rolls2" href="ItemView.aspx?ItemName=<%# Eval("ItemName") %>&num=<%# Eval("num") %>"><%# Eval("ItemName") %></a></td>
<td><%# Eval("ItemType")%></td>
<td>$ <%# Eval("ItemPrice")%></td>
<td><asp:Label ID="lblExp" Text='<%# Bind("CreateDate") %>' runat="server" /></td>
</tr>
</ItemTemplate>
<SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
</asp:DataList>
<table>
$
当我运行这段代码时,我得到一个未设置为对象引用的对象,它指向lblExp
。
如果删除标题,项目将成功运行。有没有其他方法可以简单地将标题添加到我的表中?如果不查看您的代码,很难诊断这个问题,但是我猜您的
DataList1\u ItemDataBound
方法正在尝试在e.Item
中查找lblExp
控件,而不先检查e.Item.ItemType
对于列表中的每个项目(包括标题),都将引发此事件,并且标题不包含名为lblExp
的控件
在处理项目之前,您需要检查ItemType
:
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
switch (e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.AlternatingItem:
case ListItemType.SelectedItem:
case ListItemType.EditItem:
{
Label lblExp = (Label)e.Item.FindControl("lblExp");
...
}
}
}
为什么要使用asp:标签而不是普通的html标签?这样我以后可以更改它的值。在我的代码中,我将当前存储在那里的日期时间用作过期日期,并使用一些日期时间数学。您可以从
DataList1\u ItemDataBound
方法发布代码吗?这是最可能的罪魁祸首。几乎所有的NullReferenceException
案例都是相同的。有关提示,请参阅“”。