有时,图像按钮单击事件未触发

时间:2013-04-02 11:58:02

标签: c# asp.net

我有一个添加onclick事件的方法也是一个imagebutton。 但有时您必须在“弹出”窗口打开之前多次按下按钮。 知道为什么会这样吗?

这是我的代码,我将事件添加到我的imagebutton:

private void AddProjectDetails()
    {
        ImageButton imgBtn;
        HiddenField hfld;
        String ProjectNumber;
        for (int i = 0; i < GridViewProperties.Rows.Count; i++)
        {
            hfld = GridViewProperties.Rows[i].FindControl("HiddenProjId") as HiddenField;
            imgBtn = GridViewProperties.Rows[i].FindControl("ibtnShowExtra") as ImageButton;
            ProjectNumber = hfld.Value;
            imgBtn.Attributes.Add("onclick", "window.open('ProjectDetails.aspx?ProjectNumber=" + Server.UrlEncode(ProjectNumber) + "','Graph','height=590,width=600,left=50,top=50,scrollbars=yes'); return true;");
        }
    }

3 个答案:

答案 0 :(得分:1)

尝试从javascript返回false。这样可以防止回发。有时回发可能比windows.open快,在这种情况下我认为你不想要它。

另一种解决方案是使用<a href='...' >image</a>代替图像按钮

答案 1 :(得分:0)

为什么在java-script函数中使用return true
您是否需要在页面上进行回发 如果不使用return false

我还建议您编写一个javascript函数并按如下方式调用

function OpenPopUp(projectNumber) 
{
      window.open("ProjectDetails.aspx?ProjectNumber="+ projectNumber 
                      ,'Graph','height=590,width=600,left=50,top=50,scrollbars=yes'); 
      return false;
};

并在c#code

中调用它
imgBtn.Attributes.Add("onclick", "return OpenPopUp('"+Server.UrlEncode(ProjectNumber)+"');");

答案 2 :(得分:0)

与Stefano和Shekhar一样,除非您希望页面回发,否则不得对LinkBut​​tons,Imagebuttons使用return true。

您也可以这样使用:

<asp:ImageButton ID="ButtonOpenProject" runat="server" ImageUrl="~/Images/OpenProject.png"  OnClientClick="return OpenProject('"<%# ProjectNumber %>"');" />

在您的JavaScript脚本中,您可以执行以下操作:

function OpenProject(ProjectNumber){
    window.open('ProjectDetails.aspx?ProjectNumber=' + ProjectNumber + ','Graph','height=590,width=600,left=50,top=50,scrollbars=yes');
    return false;
}

希望得到这个帮助。