我有一个添加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;");
}
}
答案 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一样,除非您希望页面回发,否则不得对LinkButtons,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;
}
希望得到这个帮助。