0

Ok。タイトルは私には一口のように聞こえるので、少し分解させてください.

crm-global.js openStdDlg メソッドを使用してモーダル ダイアログを開きます。

openStdDlg("myPage.aspx?" + qs.toString(), null, screen.height, screen.width, true, false, "maximize:yes;minimize:yes");

これの目的は、最大化できる新しいウィンドウで myPage を開くことです。myPage は MS CRM 内の iFrame に表示されるため、小さい画面では操作しにくい場合があります。

この iFrame が使用される 3 つの異なるインスタンスがあります。これらの 2 つのインスタンスでは、myPage 内に保存ボタンを含めるだけで、myPage が閉じられたときに元の myPage を更新して、新しく保存されたコンテンツを表示することができます。親ページの一部である保存に含める必要がある情報がさらにあるため、最後の問題ページは myPage から保存できません。

必要なもの:

  1. ダイアログがどのように閉じられたかに関係なく、ダイアログから親ページに文字列を返すことができる必要があります。
  2. 文字列の長さは最大 100k 文字になる可能性があります。

私は左翼手から離れていますか?より良い方法はありますか?そんなに大きな文字列を返すことさえできますか? 考え、意見、失礼な発言?

4

1 に答える 1

0

その呼び出しはwindow.openDialogを使用する必要があり、私の知る限り、戻り値に制限はありません。ただし、CRM 2011 を使用していて、ある時点で UR 12 に移行する可能性がある場合 (まだ移行していない場合)、window.openDialogすべてのブラウザーでサポートされているわけではないことを知っておく必要があります。

また、クエリ文字列を介してダイアログに値を渡すだけでなく、実際には、引数の配列を渡すことができる追加のパラメーターがあります。あなたが渡している2番目のパラメータnullは追加の引数だと思います。window.openDialog 呼び出しでは、オプションの引数配列が最後に次のように渡されます。

openDialog("http://example.tld/zzz.xul", "dlg", "", "pizza", 6.98);

そして、次のようにアクセスできます。

var food  = window.arguments[0];
var price = window.arguments[1];

前述したように、制限があるとは思いませんが、これはダイアログに追加情報を取得する別の方法です。

于 2013-04-26T14:22:30.183 に答える