我有一个转发器,里面有一个图像按钮。我需要的是当用户点击它时更改ImageButton的边框颜色。 我搜索了很多网站,但遗憾的是没有找到任何解决方案。我甚至将图像按钮更改为锚点内的图像,但它也没有工作。 我试图通过javascript为图像按钮的onclick事件更改边框颜色,但仍然不成功。我也尝试过linkbutton而不是图像按钮。 不幸的是我不能在这个项目中使用updatepanel。 任何解决方案都将受到高度赞赏。
CSS:
.HighlightBorder{border:3px solid pink;}
<asp:Repeater ID="rptrPlatforms" runat="server" OnItemDataBound="rptrPlatforms_ItemDataBound" OnItemCommand="rptrPlatforms_ItemCommand">
<ItemTemplate>
<panel style="border: 4px solid green; height: 250px; width: 330px;" runat="server">
<asp:ImageButton ID="imgPlatform" alt="" Style="border: 4px solid; height: 240px; width: 320px;" runat="server" OnCommand="Platform_Click" CommandName="PlatformClick" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"PlatformLanguageID")+","+DataBinder.Eval(Container.DataItem,"PlatformID") %>' />
</panel>
</ItemTemplate>
</asp:Repeater>
代码背后:
protected void rptrPlatforms_ItemCommand(object source, RepeaterCommandEventArgs e)
{
ImageButton img = (ImageButton)e.Item.FindControl(e.CommandName);
if (e.CommandName == ClickedElementID.Text && img != null)
{
img.Attributes.CssStyle.Add("bordercolor", "00FF00");
img.Attributes.CssStyle.Add("borderStyle", "solid");
}
}
答案 0 :(得分:1)
protected void rptrPlatforms_ItemCommand(object source, RepeaterCommandEventArgs e)
{
ImageButton img = (ImageButton)e.Item.FindControl(e.CommandName);
img.Attributes.CssStyle.Add("bordercolor", "00FF00");
img.Attributes.CssStyle.Add("borderStyle", "solid");
}
修改强>
请尝试以下
protected void rptrPlatforms_ItemCommand(object source, RepeaterCommandEventArgs e)
{
ImageButton img = (ImageButton)e.Item.FindControl("imgPlatform");
img.BorderColor = Color.Red;
}
让我知道。 谢谢
答案 1 :(得分:1)
默认情况下,ImageButtons附带style="border-width: 0"
。我认为这是因为它与呈现的图像没有冲突。因此,如果你想要宽度,请确保给它一个宽度。根据CSS规则,由于您的新宽度是在预先存在的宽度之后添加的,因此您的新宽度会受到尊重。
img.Attributes.CssStyle.Add("border-color", "#00FF00");
img.Attributes.CssStyle.Add("border-width", "1px");
img.Attributes.CssStyle.Add("border-style", "solid");
或者您可以使用ImageButton的BorderWidth
属性,该属性将使用新的宽度值替换预先存在的宽度值。
img.BorderColor = System.Drawing.ColorTranslator.FromHtml("#00FF00");
img.BorderWidth = 1;
你的工作量超出了你的需要。 RepeaterCommandEventArgs
附带一个CommandSource属性。此属性的值是命令的源(即您的ImageButton)。
protected void rptrPlatforms_ItemCommand(object source, RepeaterCommandEventArgs e)
{
ImageButton img = (ImageButton)e.CommandSource;
// ...
}
但请记住,由于这是整个Repeater的ItemCommand
事件,因此将来可能不会是ImageButton。这会导致这个演员出现问题。