0

ASPグリッドビューのハイパーリンクフィールドをクリックして、JavaScriptを実行しようとしています。javascript は正常に実行されますが、iframe が表示される前にちらつくと、ページがポストバックされます (javascript は単に iframe のソースを設定し、次にその表示を none から block に設定します)。このコントロールにはそのような属性がないため、このコントロールで自動ポストバックを無効にするにはどうすればよいですか?

<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
 NavigateUrl="javascript:ShowForm('frmAddAudits.aspx');return false"
于 2013-07-11T09:24:26.160 に答える
1

JavaScript イベント ハンドラーに追加return falseして、ブラウザーがクリック アクションを続行しないようにします。この場合はポストバックを実行します。

もちろん、理想的には、使用しないでしょう<asp:HyperlinkField><a runat="server">代わりに使用することを検討しましたか?

于 2013-07-11T09:19:50.010 に答える
1

これらのハイパーリンクのポストバックで何もしていない場合は、サーバー側の制御を描画する目的は何ですか。

これらは、Web ページでレンダリングする際のパフォーマンスに影響します。<a>したがって、これらのハイパーリンクフィールドの insreadを使用することをお勧めします

代わりに使用できます:

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

この場合、ポストバックは発生せず、byperlinkfield と比較してレンダリング時間とメモリ コストが削減されます。

于 2013-07-11T09:37:13.513 に答える
1

マークアップでこの NavigateUrl 属性を試してください

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

また、基本的な HTML アンカー タグと JavaScript を試して、新しいウィンドウを開くこともできます。

于 2013-07-11T09:22:10.230 に答える