2012-03-28 93 views
2

我有我的Notes文檔幾個領域動態數據綁定?

FieldA_1 FieldA_2 FieldA_3 FieldA_4

FieldB_1 FieldB_2 FieldB_3 FieldB_4

在複合控件我有2個編輯框 FIELDA FieldB

我有一個compositeData.ATM_NU M定義了一個自定義控件,它是一個值爲1,2,3,4的下拉列表。

如何使用可用的複合數據將我的控件上的編輯框綁定到相應的文檔字段?

例如,我想要做類似於: 「FieldA _」+ compositeData.ATM_NUM。

我想在這個線程JavaScript解決方案:

Binding an edit box within a custom control to a form field programatically

但它似乎並沒有工作。

回答

11

請嘗試以下值作爲例如字段A:

<xp:inputText value="#{document['FieldA'+compositeData.ATM_NUM]}" /> 

您還可以擴展定製控件的屬性包括整個字段名稱(和由此轉移例如「FieldA_1」到自定義控制)。然後,你應該能夠做到以下幾點:

<xp:inputText value="#{document[compositeData.fieldName]}" /> 
+3

你可能也想看看這個解釋技術Per推薦:http://stackoverflow.com/questions/9719778/xpages-more-fields-unlimited-at-the-click-of-a-button/9720793#9720793 – 2012-03-28 19:16:48

+0

我試過value =「#{document1 [CMBUExistTermID + compositeData.ATM_NUM]}「但是我得到了一個錯誤。我會嘗試野外的事情,但如果可以的話,寧願避免它。我想知道如何使用我的複合「數字」字段。 – 2012-03-28 19:24:35

+0

也試過value =「#{document1 ['CMBUExistTermID'+'4']}」這樣會產生錯誤嘗試將String「CMBUExistTermID」轉換爲類型「java.lang.Double」但是alue =「#{document1 ['CMBUExistTermID4']}「正常工作。 – 2012-03-28 19:37:48

5

的問題與該的CompositeData準備好您的使用時間。開始時,您的自定義控件準備就緒時,它的計算結果爲「0」。

試試這個:

<xp:inputText id="inputText1" 
      value="${javascript:'#{document1.SomeField'+compositeData.SomeParam+'}'}"> 
</xp:inputText> 

它用 「$」 符號也很重要。它將創建一個綁定到SomeField1,SomeField2等依賴於SomeParam。

+0

謝謝Serdar,我試過了,但沒有奏效。沒有任何錯誤或任何事情沒有按預期填充字段。這是我使用的實際公式。 value =「$ {javascript:'#{document1.CMBUAction'+ compositeData.ATM_NUM +'}'}」>> – 2012-03-29 12:46:21

+0

OK,document1定義在哪裏?內部CC還是XPage? – 2012-03-29 13:01:31

+0

我說得太快了。它工作完美。 $的目的是什麼?這是否有任何記錄? – 2012-03-29 14:07:40

5

用於數據的自定義對照結合的一個例子是這樣的:

創建自定義控制,加2個自定義屬性:BindTo(字符串),canEdit(布爾值)。通常情況下,您需要根據業務邏輯的狀態只讀取一個字段,而不是其餘部分處於編輯模式。

<xp:listBox id="listBox1" 
     rendered="#{compositeData.canEdit}"> 
     <xp:this.value><![CDATA[${javascript:"#{"+compositeData.BindTo+"}"}]]></xp:this.value> 
     <xp:selectItem itemLabel="red"></xp:selectItem> 
     <xp:selectItem itemLabel="blue"></xp:selectItem> 
     <xp:selectItem itemLabel="green"></xp:selectItem> 
</xp:listBox> 
<xp:text id="textForListbox" 
     rendered="#{!compositeData.canEdit}"> 
     <xp:this.value><![CDATA[${javascript:"#{"+compositeData.BindTo+"}"}]]></xp:this.value> 
</xp:text> 

這種方法(使用${javascript:"#{"+compositeData.BindTo+"}"})的好處是,你可以在控制任何東西綁定:一個文件,一個範圍變量,豆等

+0

歡呼聲。第一次我看到如何動態綁定到文檔以外的其他東西。很有用 – 2014-09-22 18:48:43