更改鼠标单击时在转发器内使用的图像按钮的边框颜色

时间:2015-06-16 19:02:10

标签: asp.net

我有一个转发器,里面有一个图像按钮。我需要的是当用户点击它时更改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");
        }
    }

2 个答案:

答案 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。这会导致这个演员出现问题。