0

我有一个带有ImageButton. 我ImageButton有一个OnCommand活动。

我的目标:当我单击 时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>
4

1 回答 1

1

尝试使用中继器的 OnItemCommand 事件而不是 LinkBut​​ton 的 OnCommand 事件。RepeaterCommandEventArgs 参数将使您能够访问整个项目而不仅仅是链接按钮,并且您可以设置表格行的背景颜色。

<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 参数中找到。

于 2013-10-03T19:47:59.720 回答