2012-02-23 25 views
2

ユーザーがドキュメントID(メモIDまたはUNIDではなく、一意の番号)を入力するフィールドを持つカスタムコントロールがあります。このデータ・ソースの名前はdocument1です。彼らがフィールドを終了すると、私はルックアップを実行し、extlib Dialogコントロール(データソースbundleDoc)にそのIDまたは新しいドキュメントのいずれかを表示します。 bundleDocが保存されるときに、バンドル文書が追加されたことを示すためにdocument1のログフィールドを更新したいとします。ダイアログコントロールでXPageの2番目のデータソースが表示されない

私はbundleDocを保存してダイアログを閉じる(非表示にできますが)ダイアログのSave &閉じるボタンのコードはdocument1を見ることができません。 document1.getItemValueStringまたはgetComponentを使って参照することはできません。 getItemValueStringは空の文字列を返し、getComponentは戻り値がnullであるためにエラーをスローします。

私は視覚的に役立つ画像を投稿していましたが、まだ十分な評判がありません。 : 何が欠けていますか?同じXPage上にあるため、ダイアログコントロールからドキュメント1にアクセスできないようにしてください。

更新:ダイアログフォームの2つのフィールドには、 document1から値を取得します。少なくとも、ダイアログがロードされるとdocument1が表示されます。また、bundleDocはダイアログコントロールのデータソースとして定義されていません。明示的に違いがあるかどうかを確認します。

UPDATE 2:画像を投稿するにはまだ評判が足りませんが、ここにはいくつかのコードがあります。これはダイアログコントロールを含むカスタムコントロールで、document1はカスタムコントロールのデータソースとして定義され、bundleDocはデータダイアログコントロール内のパネルのソースバンドル文書のフィールドテーブルを取得します。

対話制御でBundleIDフィールドは、これを使用して計算されたデフォルト値を有している:

if (bundleDoc.isNewNote()) { 
    getComponent("inputBundleID").getValue(); 
} else { 
    bundleDoc.getItemValueString("BundleID"); 
} 

StorageLocationIDための式は、コンポーネントがinputStorageTrayIDであることを除いて同様です。

これは保存&閉じる]ボタンのコードです:

bundleDoc.save(); 
var newArr = new Array(document1.getItemValue("WorkLog")); 
newArr.push("Added bundle " + document1.getItemValueString("BundleID") + " - " + session.getCommonUserName()); 
document1.setValue("WorkLog",newArr); 
document1.save(); 
getComponent("dialog1").hide(); 

エラーがdocument1.saveライン上で起こるが、それは(私がの値にsessionScopeと変数を設定文書1からBundleIDを得ることはありません。 newArrと 'Added bundle - Anonymous'と表示されました

+1

ドン、あなたがしようとしていることをより明確にするためにあなたのコードをいくつか追加できますか?これはあなたが答えを得るのを助けるでしょう –

+0

ありがとう、Per。今朝コードを追加しました。うまくいけば、これは私の評判を必要に応じてコントロールの画像を投稿するのに十分に高く押し上げるでしょう。ありがとう、マーク。 –

答えて

0

私はこの問題が最初に質問を投稿した後に作業を開始したため、キャッシュの問題が原因だと思います。

しかし、私が望むようにページを動作させるためにもう1つのことをしなければなりませんでした。これは、DesignerでのXPageです:

enter image description here

バック作業ログフィールドに保存&閉じる]ボタンから値を書き込むには、私は、ダイアログを開く前に、文書1のデータソースを保存しなければなりませんでした。次に、保存&閉じるコード全体でdocument1が認識され、常に正しく保存されました。

1

これは、ドキュメントコントロールがカスタムコントロール1のデータソースとして設定されていて、bundleDocがカスタムコントロール2のデータソースである場合、アクセスできませんそれらが定義されているカスタムコントロールの外にあります。

カスタムコントロールのデータソースとしてdocument1を追加し、同じカスタムコントロールにxe:ダイアログコントロール(bunleDocデータソースを含むパネルを含む)を作成すると、document1にアクセス(および更新/保存)できるようになりますダイアログ上のボタン。

+0

元の質問で追加したものを見てください。 2番目の段落では、データソースの定義方法について説明します。私はbundleDocデータソースを保存する前にdocument1を更新しようとしていますが、うまくいけば、ダイアログコントロールにバグがあると言う必要があります。 –

関連する問題