我在UpdatePanel的一個ListView無法使用ItemDataBound更改ListView中多行的背景?
<ItemTemplate >
<table id="TestTable" runat="server">
<tr id="TestRow" runat="server">
<td id="TestData" runat="server">
Name:
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>' />
<br />
UserID:
<asp:Label ID="Label2" runat="server" Text='<%# Eval("UserID") %>' />
<br />
DateAndTime:
<asp:Label ID="Label3" runat="server" Text='<%# Eval("DateAndTime")%>' />
</td>
</tr>
</table>
</ItemTemplate>
我用下面的代碼根據數據庫值改變表的背景
protected void ListViewFlowTable_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if(e.Item.ItemType == ListViewItemType.DataItem)
{
ListViewDataItem ItemToDisplay = (ListViewDataItem)e.Item;
string UserId = DataBinder.Eval(ItemToDisplay.DataItem, "UserID").ToString();
if(UserId == "1")
{
HtmlTableCell newRow = (HtmlTableCell)e.Item.FindControl("TestData");
newRow.BgColor = "Yellow";
}
else if(UserId == "2")
{
HtmlTableCell newRow = (HtmlTableCell)e.Item.FindControl("TestData");
newRow.BgColor = "Green";
}
}
}
用戶ID 2具有多個帖子,所以它給出了下面的錯誤,用戶ID 1只有一個帖子,顏色更改爲該行的預期。
System.NullReferenceException was unhandled by user code
HResult=-2147467261
Message=Object reference not set to an instance of an object.
Source=Dream
newRow爲空(Nothing)。代碼一行269沒有產生一個值。 – Brandon
@Brandon我的listview是在UpdatePanel中,是一個問題? –
我不確定,我對ASP.NET不太熟悉。你會想看看當它進入該函數時產生了什麼。它最有可能無法找到「TestRow」。不過我同意@paqogomez。這可能是重複的。 – Brandon