更改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”来处理其他事件:这种方法就是数据编辑的方法。