新手求教,使listView控件中的行,显示为红色
要求是这样的,这是一个编辑用户信息的ListView控件,要求,如果用户状态为“禁用”,则该行显示为红色,
我的思路是这样的,将ItemTemplate模板中的tr控件设置为服务器控件,然后编辑listview的ListView1_ItemDataBound事件,先取得数据,然后判断,如果状态为“禁用”,则通过e.item.findcontrol找到该行,再通过设置改行的背景色为红色。
我把代码贴在下面,求各位大大帮忙看看,为啥不好用?
前段的ListView中的ItemTemplate代码如下:
<ItemTemplate>
<tr runat="server" id="trRow">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" />
</td>
<td>
<asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' />
</td>
<td>
<asp:Label ID="UserNameLabel" runat="server" Text='<%# Eval("UserName") %>' />
</td>
<td>
<asp:Label ID="UserTypeLabel" runat="server" Text='<%# Eval("UserType") %>' />
</td>
<td>
<asp:Label ID="ReginDateLabel" runat="server" Text='<%# Eval("ReginDate") %>' />
</td>
<td>
<asp:Label ID="PassWordLabel" runat="server" Text='<%# Eval("PassWord") %>' />
</td>
<td>
<asp:Label ID="UserStateLabel" runat="server" Text='<%# Eval("UserState") %>' />
</td>
</tr>
</ItemTemplate>
后面cs中的代码如下:
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
ListViewDataItem lvdata = (ListViewDataItem)e.Item;
DataRowView rowView = (DataRowView)lvdata.DataItem;
WebApplication1.DAL.DataSetAdmin.T_AdminRow row = (WebApplication1.DAL.DataSetAdmin.T_AdminRow)rowView.Row;
if (row.UserState == "启用 ")
{
HtmlTableRow trRow = (HtmlTableRow)e.Item.FindControl("trRow");
trRow.Attributes["class"] = "trText";
}
else if (row.UserState == "禁用 ")
{
HtmlTableRow trRow = (HtmlTableRow)e.Item.FindControl("trRow");
trRow.Attributes["class"] = "trTextRed";
}
else
{
throw new Exception("非法状态!");
}
}
------解决方案--------------------
调试代码,
前端生成的代码中有没有class="trTextRed" 内容?
后端事件ListView1_ItemDataBound触发了没有?