2013-10-03 22 views
0

我有一個帶有ImageButton的ASP.NET中繼器。我的ImageButton有一個OnCommand事件。更改ASP.NET中繼器中選定行的顏色

我的目標:當我點擊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

嘗試使用Repeater的OnItemCommand事件而不是LinkBut​​ton的OnCommand事件。 RepeaterCommandEventArgs參數將使您可以訪問整個項目,而不僅僅是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參數中找到它。

+0

未檢測到事件rpt_ItemCommand:/ – Jcbo

+0

在Repeater標記中,是否放置了'OnItemCommand =「rpt_ItemCommand」'並將事件代碼放在代碼隱藏中? –

+0

是的,但沒有檢測到事件:( – Jcbo