ローカルページレイアウトを実現することができないために私たちは、古典的な環境の中で、時には、時にはいくつかの変更のこのVFページの要件は、このページレイアウトを更新する必要があるか、現在はそのVFページが新しいポップアップし、標準のページレイアウト機能を強化するために、VFページに導入することができますウィンドウの変更は、プロジェクトは、フロントが良くないので、この需要を満たし、彼を解決するためにいくつかの時間がかかった、後半にそれをマークし、ページ全体のレイアウトを更新する必要があり、同じシーンを満たしている直接使用を引き継ぐことができます。
デモは、VFページの現在の導入に基づいて新しいウィンドウをポップアップ表示してみましょう、現在のページレイアウトの可変部分のウィンドウが自動的に所望の効果を達成するために、このページレイアウトを更新する必要性を再割り当てされます。
GoodsDemoPage.page:ボタンを表示するために、このボタンをクリックしてサブページをポップアップ表示
1 < 頂点:ページstandardController = "Goods__c" > 2 < スクリプトタイプ= "テキスト/ javascriptの" > 3 関数openChangeStatusWindow(){ 4 VARのdirectURL = ' /apex/GoodsDemoDirectPage?id={!Goods__c.Id} ' 。 5つの window.open(directURL、' メソッドによりNewWindow ' 、' 高さ= 100、幅= 200、トップ= 200、左= 350、ツールバー=なし、メニューバー=なし、スクロールバー=なし、サイズ変更可能=はい、場所=なし、ステータス=なし" ); 6 } 7 8 機能refreshPagelayout(){ 9 window.top.location.href = ' /{!Goods__c.Id} ' 。 10 } 11 </ スクリプト> 12 < 頂点:フォーム> 13 < 入力タイプ= "ボタン" 値= "清空ステータス状态" のonclick = "openChangeStatusWindow();" /> 14 </ 頂点:フォーム> 15 </ 頂点:ページ>
GoodsDemoDirectPage.page:親レベルとページレイアウトを更新ステータスの状態を空にするための製品。
1 < 頂点:ページ showHeader = "false"を> 2 < スクリプトSRC = "../../石鹸/ AJAX / 42.0 / connection.js" タイプ= "テキスト/ JavaScriptを" > </ スクリプト> 3 < スクリプトタイプ= "テキスト/ javascriptの" > 4 sforce.connection.sessionId = ' {GETSESSIONID()!} ' 。 5 機能changeGoodsStatus(){ 6件の VARの商品= 新しいsforce.SObject(" Goods__c " )。 goods.Id = ' {$ CurrentPage.parameters.Id!} ' ; 8 goods.Status__c = NULL ; 9 結果= sforce.connection.update([商品])。 10 はconsole.log(' 結果' + 結果)。 11 であれば([結果0 ] .getBoolean(' 成功を' )){ 12 window.opener.refreshPagelayout()。 13 はwindow.close(); 14 } 他{ 15 アラートが(' エラーが発生しました' ); 16 } 17 } 18 </ スクリプト> 19 < 頂点:フォーム> 20 < 入力タイプ= "ボタン" 値= "清空" のonclick = "changeGoodsStatus();" /> 21 </ 頂点:フォーム> 22 </ 頂点:ページ>
GoodsDemoPage設定ページレイアウトこののsObjectのできGoods__c。、ページをポップアップでページをクリックし、後でボタン 『ポップアップページが閉じられると、現在のページのレイアウトが自動的に更新されます後クリア』ボタン「クリアステータスステータスをクリックします。
window.topといるwindow.opener:ここでは二つの重要なポイントがあります。次のようにこれらの2つの違いは以下のとおりです。
、つまり、トップレベルウィンドウのためにブラウザのウィンドウを返すwindow.top。ページレイアウトに埋め込まGoodsDemoPageは、次いでGoodsDemoPageに対して、そのwindow.top点がウィンドウに対応する現在のページレイアウトです。
このページのページを開くに戻りいるwindow.opener。GoodsDemoDirectPageについて、GoodsDemoPageに、GoodsDemoDirectPageためので、そのいるwindow.openerポイントをGoodsDemoPageを開きます。だから、このデモのために、私たちは、その後、いるwindow.openerによってrefreshPageLayoutメソッドGoodsDemoPageを呼び出すプロセスをリフレッシュするために、現在のURLを指してwindow.top使用する必要があります。
要約:私はエラーまたはそのことを歓迎するより良い方法がある場合は、より多くの野菜をJSので主に、JSの知識に関連する記事は、ウェルカムメッセージを理解していません。