更改ASP.NET Repeater中所选行的颜色

时间:2013-10-03 19:23:32

标签: asp.net

我有一个带有ImageButton的ASP.NET转发器。我的ImageButtonOnCommand个事件。

我的目标:当我点击ImageButton时,我希望更改所选行的颜色。

以下是我的ASP.NET代码的摘录。任何人都可以帮助我吗?

<asp:Repeater ID="RepeaterID" runat="server" OnItemCommand="rpt_ItemCommand">
  <HeaderTemplate>
    <table cellpadding="0" cellspacing="0" id="table1">
      <thead>
        <tr>
          <th>
            <asp:Label ID="lbl_refCode" runat="server"></asp:Label>
          </th>
          <th style="width: 25px"></th>
        </tr>
      </thead>
    </table>
  </HeaderTemplate>
  <ItemTemplate>
    <tr id="row" runat="server">
      <td  style="width: 50px;">
        <asp:Label ID="Label2" runat="server" Text='<%# Eval("RefCode") %>'</asp:Label>
      </td>
      <td style="width: 25px;">
        <asp:ImageButton ImageUrl="Icons/edit.png"  CommandArgument='<%# Eval("ID") %>'  CommandName="Edit" ID="ImgEdit" OnCommand="Manage" runat="server">
        </asp:ImageButton>
      </td>
    </tr>
  </ItemTemplate>
  <AlternatingItemTemplate>
    <tr id="row" runat="server">
      <td  style="width: 50px;">
        <asp:Label ID="Label2" runat="server" Text='<%# Eval("RefCode") %>' </asp:Label>
      </td>
      <td  style="width: 25px;">
        <asp:ImageButton ImageUrl="Icons/edit.png"  CommandArgument='<%# Eval("ID") %>'  CommandName="Edit" ID="ImgEdit" OnCommand="Manage" runat="server">
       </asp:ImageButton>
     </td>
    </tr>
  </AlternatingItemTemplate>
  <FooterTemplate>
  </Table>
  </FooterTemplate>
</asp:Repeater>

1 个答案:

答案 0 :(得分:1)

尝试使用Repeater的OnItemCommand事件而不是LinkBut​​ton的OnCommand事件。 RepeaterCommandEventArgs参数将允许您访问整个Item而不仅仅是LinkBut​​ton,并且您可以设置表格行的背景颜色。

<asp:Repeater ID="RepeaterID" runat="server" OnItemCommand="rpt_ItemCommand">
    <HeaderTemplate>
        <table  cellpadding="0" cellspacing="0" id="table1">
            <thead>
                <tr>
                    <th>
                        <asp:Label ID="lbl_refCode" runat="server" </asp:Label>

                    </th>
                   <th style="width: 25px"></th>

                </tr>
            </thead>
    </HeaderTemplate>                                     
    <ItemTemplate>
        <tr id="row" runat="server">
            <td  style="width: 50px;">
                <asp:Label ID="Label2" runat="server" Text='<%# Eval("RefCode") %>' </asp:Label>                                            
            </td>                                            
            <td  style="width: 25px;">
                <asp:ImageButton ImageUrl="Icons/edit.png"  CommandArgument='<%# Eval("ID") %>'  CommandName="Edit" ID="ImgEdit" runat="server">                                                      
                </asp:ImageButton>

            </td>
        </tr>
    </ItemTemplate>
    <AlternatingItemTemplate>
        <tr id="row" runat="server">
            <td  style="width: 50px;">
                <asp:Label ID="Label2" runat="server" Text='<%# Eval("RefCode") %>' </asp:Label>                                            
            </td>                                            
            <td  style="width: 25px;">
                <asp:ImageButton ImageUrl="Icons/edit.png"  CommandArgument='<%# Eval("ID") %>'  CommandName="Edit" ID="ImgEdit" runat="server">                                                      
                </asp:ImageButton>

            </td>
        </tr>
    </AlternatingItemTemplate>

    <FooterTemplate>
        </Table>
    </FooterTemplate>
</asp:Repeater>

protected void rpt_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName.Equals("Edit"))
    {
        HtmlTableRow newRow = e.Item.FindControl("row") as HtmlTableRow;
        if (newRow != null)
            newRow.BgColor = "#CCCCCC";
    }
}

请注意,在ItemTemplate中,表行具有一个id,因此可以在ItemCommand参数中找到它。