2016-09-13 13 views
0

提出せずに新しいページを開きますAspのボタンは、私がポップアップさせるためのボタンについては、このASPXスクリプト持っ

protected void btnNewEntry_Click(object sender, EventArgs e) 
{ 


ClientScript.RegisterStartupScript(this.Page.GetType(), "", "window.open('../search/postcode_search/Default.aspx?code="+ p +"','Post Code Search','width=800,height=300,left=100,top=100,resizable=yes'); popup_handle.focus();", true); 

} 

をしかし、ボタンとしてポップをクリックします親ページがリフレッシュされます。それはなぜそうですか?どのような回避策ですか?

+1

変化にHTMLの私はカント – GANI

+0

。私はASP関数を使用する必要があります。 –

答えて

1

ページは、サーバーへの要求が行われたときにリフレッシュし、ボタンなどのサーバーコントロールは、サーバーへの旅が行われますクリックされたときに意味し、デフォルトでのAutoPostBack =真の性質を持っていました。挿入ボタンにAutoPostback = falseを設定すると、これはあなたのためのトリックを行います。

or  

Add OnClientClick="return false;" , 

<asp:button ID="btninsert" runat="server" text="Button" OnClientClick="return false;" /> 
+0

は、彼がそのwindow.openを発射するために必要なものをクリックしたクライアントではありませんか? falseを返すだけでは、何も実行せず、クリックを報告することもありません。自動ポストバックをオフにすることは、サーバーへのラウンドトリップを防ぐための正しいアプローチです。しかし、私はサーバー側ではなく、必要なaspxページになる新しいページを開くコントロールを提案します。クライアント側に必要な情報を渡すことができます。 – fizch

+0

私は、私のボタンにAutoPostBack = "false"を追加しましたが、それはまだ同じです.. –

1

おそらく実際にコードで起こっていることの少しの説明が役に立ちます。すでに自動ポストバックについて説明しました。そのボタンをクリックすると、イベントがサーバーに返されることがわかります。ページは再び初期化され、ビューステートとすべてのポストされたデータが再ロードされます。その後、ボタンのクリックイベントが処理されます。この時点で

、あなたのコードは、ページにwindow.openスクリプトを書き込みます。これは特定の場所ではないことに注意してください。これは、ページ上のどこかに追加されて実行される単なるスクリプトです。ビューステートが更新され、ページがクライアントに返されます。ユーザーがページを再読み込みすると、そのスクリプトは再び実行されます。

あなたの最善の策は、クライアント側のボタンにそれを変換しようとしています。ポップアップを読み込む前に、サーバーから必要なデータを取得する方法を見つけてください。これを行う最も簡単な方法は、AJAXコールを作成し、エンドポイントから成功した場合にポップアップを開くことです。

+0

私はこれをサーバー側で行ったのは、そのポップアップウィンドウにデータを送信する必要があるということです。私は親のURLパラメータをどこに送るのですか。 AJAXを使用する方法はありますか? –

+0

"code = p"のデータ、またはページをロードする前にサーバー側で追加処理が必要ですか? ajaxを介してエンドポイントを呼び出し、必要なIDを返してから、必要に応じてその戻り値を処理するのはかなり簡単です。 – fizch

0

これを試してください。 が更新されました。

<asp:Button ID="btnNewEntry" Text="Post Code Search" OnClick="btnNewEntry_Click" runat="Server" target="_blank" 
OnClientClick="javascript:window.open('../search/postcode_search/Default.aspx?code=+ p','Post Code Search','width=800,height=300,left=100,top=100,resizable=yes').focus();return false;"/> 

問題は "+ p +"によるものでした。

+0

こんにちは、私はエラーを取得しています:サーバータグはうまく形成されていません。 –

+0

ねえ、更新されたものを試してください、それは間違いなく動作します。 – ADarnal

0

助言としてだから、私は、クライアント側に行くことにしました。ここに私のスクリプトは次のとおりです。

<button onclick="OpenPopup()" type="button">Post Code Search</button> 

とその上のJavaScriptコード:

<script> 

function OpenPopup() { 
    var getQueryString = function (field, url) { 
    var href = url ? url : window.location.href; 
    var reg = new RegExp('[?&]' + field + '=([^&#]*)', 'i'); 
    var string = reg.exec(href); 
    return string ? string[1] : null; 
}; 
var str = getQueryString('code'); 
    if (str != null) { 
    p = str.replace(/%20/g, ' '); 
     } 
    else { 
    p = ""; 
    } 
    var url = "../search/postcode_search/Default.aspx?code=" + p; 
    window.open(url, "Post Code Search", "toolbar=no, location=no,status=yes,menubar=no,scrollbars=yes,resizable=no, width=750,height=400,left=430,top=100"); 
    return false; 
    } 


</script> 

ので、基本的にはそれが何をするか、それは親ウィンドウのURLからパラメータをつかみ、ウィンドウのURLをポップアップするために追加されます。私の親ウィンドウのURL:

/Customer.aspx?code=V6E%20111 & FIRSTNAME = MYNAME

私はそれは同様に他の人のために役立ちます願っています。助けてくれてありがとう。

関連する問題