アトラスには、部分的な更新をサポートする UpdatePanel コントロールがあります。もちろん、ScriptManager も EnablePartialRendering="true" を設定する必要があります。
xmlHttp を使用した部分的な更新。プロセスは次のとおりです。
1: ポストバック中に、ページの JS がページ上のデータをポストバックします (ページ全体をポストバックする必要があります)
2: バックグラウンドがリクエストを受信し、処理を開始します (ページの pageLoad をトリガーできます)
3: 処理後、更新するデータのみをページに送り返します (更新する UpdatePanel の名前に応じてデータのどの部分を送り返すかを決定します。これは this.updatePanelXX.Update() のコードです)
4: ページ (クライアント) はポストバック データのこの部分のみを更新します (これはいわゆる部分更新です。方法は、updatePanle を見つけてから、UpdatePanel.InnerHtml=PostBackData を見つけることです。これ
は
直接置き換えです)。新しいものは、指定された updatePanel 部分のみを再描画するものです (サーバーにポストバックする場合、ページ全体をポストバックする必要があります。バックグラウンド コードは以前と同様に各ページを処理しますが、一部のみを再描画します)処理結果の一部がクライアントに返されます)。
このように、UpdatePanle の処理中にページの js 処理をトリガーしたい場合は、非常に困難になります。ポストバックしたすべてのデータは隅々まで更新されるため、以前の Response.Write(js) はまったく機能しなくなります。
解決策は次のとおりです。
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenOverViewPart", openScript); RegisterStartupScript メソッドを使用して js 関数を登録すると、スムーズに実行できます。
実際、実行はそれほどスムーズではありません。atlas が部分的な更新を実行した後、ページ上のすべての js がまとめられるためです -- 自分のことは気にしないでください -- そのため、小さな影響が生じます。多くの js には次のようなものがあります。 <! - やその他のコメント記号は注意しないと、自分の JS もコメント化されてしまいます。これは実際にはさらに厄介です。
解決策は X です。js 出力スタイルを自分で制御し、コメントではないことを示すためにさらにいくつかの改行を追加する必要があります。
文字列 openScript = "nt";
openScript = "<script" + " type='text/javascript'>rn"
+ "rn"
+ "var a=0;rn"
+ "opener.top.__doPostBack('" + Request.Params["refresh"] + "','refresh');rn"
+ "window.opener.focus();"
+ "window.close();"
+ "<" + "/script" + ">";