我试图通过点击asp gridview的超链接字段来执行一些javascript。 javascript执行正常,但页面回发,所以当iframe在显示之前闪烁(javascript只是设置iframe的源,然后显示从none到block。)。如何在此控件上禁用autopostback,因为它没有这样的属性?
<Columns>
<asp:hyperlinkfield Text="Update"
NavigateUrl="javascript:ShowForm('frmAddAudits.aspx');"
HeaderText="Update"
target="_blank"/>
<asp:hyperlinkfield Text="Add Findings"
NavigateUrl="javascript:ShowForm('frmAuditFindings.aspx');"
HeaderText="Add Findings"
target="_blank" />
</Columns>
CSS
.ShowMe{display:block;}
.HideMe{display:none;}
的Javascript
function ShowForm(urlToGoTo){
document.getElementById('myiFrame').src = urlToGoTo;
document.getElementById('myiFrame').className = "ShowMe";
}
答案 0 :(得分:2)
尝试使用TemplateFiled和锚标记,如下所示:
<Columns>
<asp:TemplateField>
<ItemTemplate>
<a href="#" onclick="javascript:ShowForm('frmAddAudits.aspx');return false;">
</ItemTemplate>
</asp:TemplateField>
如果您愿意,可以设置runat="server"
并为其提供ID
答案 1 :(得分:1)
在您的javascript事件处理程序中添加return false
,以便浏览器不会继续执行单击操作,在这种情况下执行回发。
当然,理想情况下,您不会使用<asp:HyperlinkField>
。您是否考虑过使用<a runat="server">
?
答案 2 :(得分:1)
在标记中尝试此NavigateUrl属性
NavigateUrl="javascript:ShowForm('frmAddAudits.aspx');return false;"
您还可以尝试使用基本的HTML锚标记和javascript来打开新窗口。
答案 3 :(得分:1)
NavigateUrl="javascript:ShowForm('frmAddAudits.aspx');return false"
答案 4 :(得分:1)
看看你是否在回发这些超链接时没有做任何事情,那么绘制服务器端控件的目的是什么。
这会影响在网页上呈现时的性能。所以我建议你使用这些超链接域的<a>
插入
你可以改用:
<a href="#" onclick="javascript:ShowForm('frmAddAudits.aspx');return false;">
在这种情况下永远不会发生回发,并且与byperlinkfield相比,缩短渲染时间和成本。