禁用网格视图asp:hyperlinkfield上的自动回邮



我正试图在单击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";
}

尝试使用TemplateFiled和锚标记,如下所示:

<Columns>
    <asp:TemplateField>
        <ItemTemplate>
             <a href="#" onclick="javascript:ShowForm('frmAddAudits.aspx');return false;">
        </ItemTemplate>
    </asp:TemplateField>    

如果需要,可以设置runat="server"并为其提供ID

在javascript事件处理程序中添加return false,这样浏览器就不会继续单击操作,在本例中是回发。

当然,理想情况下,您不会使用<asp:HyperlinkField>。您是否考虑过使用<a runat="server">

 NavigateUrl="javascript:ShowForm('frmAddAudits.aspx');return false"

在标记中尝试此NavigateUrl属性

NavigateUrl="javascript:ShowForm('frmAddAudits.aspx');return false;"

此外,您还可以尝试基本的HTML锚标记和javascript来打开新窗口。

看看如果你没有对这些超链接的回发做任何事情,那么绘制服务器端控制的目的是什么。

这些会影响在网页上渲染时的性能。所以我建议你使用<a>来读取这些超链接字段

您可以使用:

            <a href="#" onclick="javascript:ShowForm('frmAddAudits.aspx');return false;">

在这种情况下,Postback永远不会发生,与byperlinkfield相比,它减少了渲染时间和内存成本。

最新更新