2016-06-23 10 views
3

クリックすると別のタブを開くボタンをクリックしたいと思っています。私の場合、これは2つのASP.Netコントロールを使用して実行され、asp literal<form>というタグが1つの送信ボタンとしてフォーマットされています。なぜなら、それはいくつかのPOST機能を持つ必要があるからです。新しいタブを開くには、与えられたURL_blankASP.NET Webフォームで最新のページを更新せずにクリックすると別のタブを開く方法は?

<input type='submit' id='openWindowButton' value = 'Open window'> 

asp literal内のコードは次のようになります。 私は今度は別のaspコントロールLinkButtonをクリックしてイベントを実行し、asp literaljavascriptコードを使ってクリックをトリガーします。私は上記のコードでasp literalを移入するいくつかのコードを、実行する必要が

<asp:LinkButton ID="literalID" OnClick="DoStuff" runat="server">Do stuff</asp:LinkButton> 

イベントDoStuffで、それが終了した後、それはこのようなopenWindowButton IDと、送信ボタンをクリックしてトリガー:それは次のようになります。

function InvokeReportFormClick() { 
      document.getElementById("openWindowButton").click(); 
      return false; 
     } 

クリックのコードにはScriptManager.RegisterStartupScriptメソッドが追加されています。

すべてがうまくいけば、LinkBut​​tonはリテラルに値を設定してクリックし、リテラルはタブを開きます。唯一の問題は、ページがリロードされ、この動作を避けたいということです。 私はスクリプトの最後にfalseを返そうとしましたが、上記のようにjavascriptメソッドからfalseが返された場合、ページはまだリロードされ、asp literalの生成されたクリックのためだと思います。

<input type='submit' id='openWindowButton' value = 'Open window' onclick="return false;"> 

が、それは私が必要なタブを開いてから停止します。私は追加することができます

私は次のようにasp literal入力の上のonclickイベントにfalseを返し追加します。

私はまた、このサンプルのようにUpdatePanelコントロールにasp:Linkbuttonを入れて試してみました:

<asp:ScriptManager runat="server" ID="reportScriptManager"> 
</asp:ScriptManager> 
<asp:UpdatePanel ID="updatePanelID" runat="server"> 
<ContentTemplate> 

<asp:LinkButton ID="literalID" OnClick="DoStuff" runat="server">Do stuff</asp:LinkButton> 
</ContentTemplate> 
</asp:UpdatePanel> 

しかし、私はまだasp literalクリックから推測すると、それはまだ、ページを更新。私はLinkButtonの隣ASPリテラルを追加する場合と、ページが更新されませんが、私はページがリロードされませんので、それが起こる、とasp literalテキストがロードされていないと思いますどの

Uncaught TypeError: Cannot read property 'click' of null.

というエラーを取得しますクリックアクションが発生したときにページ内に表示されます。

ページのリロードを停止しても、これらのボタンと同じ機能を維持するにはどうすればよいですか? よろしくお願いいたします。

EDITは

私はそれに簡単な手動クリックすると、フォームをリロードしないasp literalから作られた提出のボタンが唯一の新しいタブを開くと述べています。したがって、この場合の主な問題は、asp LinkButtonをページリロードをトリガーしないようにすることだけです。.csファイルで

asp.net forumに提案されたとして、私は、LinkBut​​tonコントロールをクリックした後runnedすることが私のスクリプトを登録するには、このメソッドを使用していますファイル:

RegisterStartupScript(Page page, Type type, string key, string script, bool addScriptTags)

+0

この問題は、あなたがイベントバブルを起こしているからだと思います - http://stackoverflow.com/questions/25092840/how-to-prevent-bubbling-for-form-submit –

+0

@ MerlynMorgan-Graham返信ありがとう、私は両方のボタンのデフォルトを防ぐために使用しようとしましたが、働いていない、ページはまだリロード – meJustAndrew

答えて

0

私がいることを認識した後に、この問題が修正されました私はScriptManager.RegisterStartupScriptの間違ったオーバーロードを使用しています。私は(それがhereを見出すことができる)最初のパラメータとしてページを取る方法を使用していた、そして私は、パラメータとして、MSDNドキュメントのよう

The control that is registering the client script block

をとる方法を使用しようとした後、及び対照としてのLinkBut​​tonを送信します、それは実際に働いた。ページはもう読み込まれていませんでした。私はこれが同じ問題を抱えている誰かを助けることができれば幸いです

関連する問題