日期:2014-05-18  浏览次数:21061 次

新手求教,使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触发了没有?