动态 ImageButton ImageClickEventHandler 未触发

问题描述 投票:0回答:2

我在网页上创建了一个按钮,单击该按钮将从

Server.MapPath(...)
获取图像并将图像转换为 ImageButtons。单击这些图像按钮后,它们应该出现在另一个放大的图像中。

图像(作为按钮)在网站上显示正确并且可以单击,但是没有任何反应。 调试表明

imgBtnClick
方法从未被调用过。

问题是ImageClickEventHandler中指定的方法没有被触发。 非常感谢任何关于为什么会发生这种情况的建议。

请在下面找到我的代码示例。

单击主按钮时执行的代码

protected void Logo_Click(object sender, ImageClickEventArgs e)
{
     Logo.CssClass = "Highlight";      
     Images();
     Panel_Photo.Visible = true;
}

Images 方法,为

Server.MapPath(...)

处的所有图像创建动态图像按钮
protected void Images()
{
    foreach (string strFileName in Directory.GetFiles(Server.MapPath("~/images/Photos/Stuff")))
    {
        ImageButton imgBtn = new ImageButton();
        FileInfo fileInfo = new FileInfo(strFileName);
        imgBtn.ImageUrl = "~/images/Photos/Stuff/" + fileInfo.Name;
        imgBtn.Width = Unit.Pixel(100);
        imgBtn.Height = Unit.Pixel(100);
        imgBtn.Style.Add("padding", "5px");
        imgBtn.Click += new ImageClickEventHandler(imgBtnClick);
        imgBtn.OnClientClick = "return false";
        Panel_Photo.Controls.Add(imgBtn);
    }
}

最终方法应在另一个图像中显示单击的图像按钮中的图像

void imgBtnClick(object sender, ImageClickEventArgs e)
{
    LabelPhoto.Text = "test";
    ImageClicked.ImageUrl = ((ImageButton)sender).ImageUrl;
}

标签和“ImageClicked”是在 aspx 页面中创建的

<asp:Image ID="ImageClicked" runat="server"></asp:Image>

Panel_Photo
ImageClicked
位于不同的 div 中,在网页上彼此相邻。

c# asp.net imagebutton
2个回答
0
投票

@ademg 和 @Greg 的评论都帮助我找到了解决方案。

我基本上必须将整个

foreach
代码块放入 Page_Load 方法中并删除该行
imgBtn.OnClientClick = "return false";

每当点击

imgBtn
(图像)时,网页就会跳转到顶部,但这是另一个需要研究的问题。


0
投票

我遇到了同样的问题,但设置这些属性后它工作正常。

        ImageButton btnRepair = new ImageButton();
        btnRepair.ID = "btnRepair";
        btnRepair.EnableViewState = true;
        btnRepair.CausesValidation = false;  
        btnRepair.ImageUrl = "img/btns/RepairKey.png";          
        btnRepair.Click += new ImageClickEventHandler(btnRepair_Click);
© www.soinside.com 2019 - 2024. All rights reserved.