在gridview asp:hyperlinkfield上禁用AutoPostback?

时间:2013-07-11 09:16:33

标签: c# javascript jquery asp.net

我试图通过点击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";
}

5 个答案:

答案 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相比,缩短渲染时间和成本。