0

我有一个 ImageButton 到一个中继器。

我的 ASP.NET 代码是:

<asp:Repeater ID="rpt" runat="server">
  <ItemTemplate>
    <asp:ImageButton ID="img_sport" runat="server" CommandName='<%# Eval("IDSport") %>' CommandArgument='<%#  Eval("SportName") %>' ImageUrl='<%#  Eval("SportName","~/Images/{0}-trp.png") %>' OnCommand="img_sport_Click" />
  </ItemTemplate>
</asp:Repeater>

从后面的代码中,我以这种方式更改所选/单击图像的 ImageUrl:

[...]
ImageButton btn = (ImageButton)sender;
btn.ImageUrl = "/Images/" + sportName + "-trp-selected.png";
[...]

但是,如果我点击其他图像,我会选择显示两个/三个/四个图像,所以首先,在我后面的代码中,我想将 ImageUrl 重置为默认值,然后我将应用新的ImageUrl 仅适用于选定/单击的 ImageButton。

那么,如何重置所有 ImageUrl?

4

1 回答 1

1

在看到您的代码时,我猜您想在单击图像时更改图像,以便用户可以识别是否选择了图像。如果你想实现这一点,你为什么不试试JavaScript哪个可以在没有回发的情况下处理同样的事情。

请参见下面的带有 JavaScript 函数的代码示例:

<asp:Repeater ID="rpt" runat="server">
    <ItemTemplate>
        <asp:ImageButton ID="img_sport" runat="server" ImageUrl='<%#  Eval("SportName","~/Images/{0}-trp.png") %>' OnClientClick='<%# "return ManageSelection(this,\"" + Eval("SportName").ToString() + "\");"%>' />
    </ItemTemplate>
</asp:Repeater>

<script type="text/javascript">
    function ManageSelection(control, sportName) {
        var selectedImage = '/Images/' + sportName + "-trp-selected.png";
        $(control).attr('src', selectedImage);
        return false;
    }
</script>
于 2014-11-18T11:16:58.687 回答