更改ASP.NET中继器中选定行的颜色

更改ASP.NET中继器中选定行的颜色,asp.net,Asp.net,我有一个带有ImageButton的ASP.NET中继器。我的ImageButton有一个OnCommand事件 我的目标:当我单击图像按钮时,我想更改所选行的颜色 下面是我的ASP.NET代码的摘录。有人能帮我吗 尝试使用中继器的OnItemCommand事件,而不是LinkButton的OnCommand事件。RepeaterCommandEventArgs参数将允许您访问整个项目,而不仅仅是LinkButton,并且您可以设置表行的背景色 <asp:Repeater ID="Repe

我有一个带有
ImageButton
的ASP.NET中继器。我的
ImageButton
有一个
OnCommand
事件

我的目标:当我单击
图像按钮时,我想更改所选行的颜色

下面是我的ASP.NET代码的摘录。有人能帮我吗


尝试使用中继器的OnItemCommand事件,而不是LinkButton的OnCommand事件。RepeaterCommandEventArgs参数将允许您访问整个项目,而不仅仅是LinkButton,并且您可以设置表行的背景色

<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";
    }
}

受保护的无效rpt_项命令(对象源,RepeaterCommandEventArgs e)
{
if(例如CommandName.Equals(“编辑”))
{
HtmlTableRow newRow=e.Item.FindControl(“行”)作为HtmlTableRow;
if(newRow!=null)
newRow.BgColor=“#cccc”;
}
}

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

在Repeater标记上,您是否放置了
OnItemCommand=“rpt_ItemCommand”
并将事件代码放在代码中?您在哪里看到它没有检测到事件?这是一个编译或运行时错误,还是事件没有触发?在.aspx页面顶部的@Page指令中,是否将AutoEventWireup属性设置为true?我需要更多的信息来帮助你。我点击链接按钮,什么也不做。但是没有给我任何错误。是,属性AutoEventWireup为true。我编辑了代码。请看,也许有帮助。rpt_ItemCommand的代码与您的代码相同,只是ComandName是“编辑”。我已更新了答案中的代码,以匹配您的问题。我删除了ImageButton上的
OnCommand=“Manage”
属性,因为您不需要额外的事件处理程序,并且我更改了
rpt_ItemCommand
中的
if
语句,以查找CommandName“Edit”(ImageButtons上CommandName属性的值)从技术上讲,如果这是使用ItemCommand的唯一操作,则不需要检查CommandName,但如果要添加其他按钮来执行删除或复制等操作,则在同一事件中处理这些按钮,并按CommandName进行区分。我仍然没有测试其解决问题的新方法,我只能在明天测试。但我使用OnCommand=“Manage”来处理其他事件:这种方法就是数据编辑的方法。