0

我正在尝试单击 asp gridview 的超链接字段来执行一些 javascript。javascript 执行良好,但页面回发,所以当 iframe 在显示之前闪烁时(javascript 只是将 iframe 的源设置,然后将其显示从无到阻止。)。由于它没有这样的属性,我该如何禁用此控件的自动回发?

<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";
}
4

5 回答 5

2

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

<Columns>
    <asp:TemplateField>
        <ItemTemplate>

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

如果你愿意,你可以设置runat="server"并给它一个ID

于 2013-07-11T09:47:30.453 回答
1

在您的 javascript 事件处理程序中添加return false,以便浏览器不会继续单击操作,在这种情况下执行回发。

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

于 2013-07-11T09:19:50.010 回答
1

在标记中试试这个 NavigateUrl 属性

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

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

于 2013-07-11T09:22:10.230 回答
1
 NavigateUrl="javascript:ShowForm('frmAddAudits.aspx');return false"
于 2013-07-11T09:24:26.160 回答
1

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

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

您可以改用:

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

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

于 2013-07-11T09:37:13.513 回答