2012-04-06 77 views
1

我在自定義控件中有一個自定義屬性。自定義屬性位於Field1組中,稱爲ClientID。組和字段在我的自定義屬性定義中。我想在頁面加載時設置它。所以,我做到以下幾點:當屬性在一個組中時爲複合數據設置一個值

compositeData.Field1.ClientID = getClientId("Field1") 

當初我做我得到一個錯誤:

「compositeData.Field1」爲空

但是,如果我定義一個屬性關閉根的所謂Field1_ClientID和請執行以下操作:

compositeData.Field1_ClientID = getClientId("Field1") 

然後一切正常。我如何在自定義屬性中使用組?

回答

0

要設置組「組1」中的屬性「property1」你可以做到以下幾點:

compositeData.group1.property1 = "test";

您可以運行在自定義控制的beforePageLoad或afterPageLoad事件上面的代碼。

我認爲你的問題是你正在設置自定義控件設置之前發生的事件中的值。

+0

他希望在頁面加載時設置它。 – 2012-04-06 20:34:28

+0

我已經使用beforePageLoad和afterPageLoad事件更新了我的答案。 – 2012-04-07 07:57:01

+0

感謝您的回覆。我已經嘗試過Before和AfterPageLoad並得到相同的錯誤。請再次閱讀我的帖子。該錯誤與我設置的控件無關。這是該組織的問題。我得到的錯誤是'compositeData.Field1'爲空。如果我將它移動到該字段的onChange事件,我甚至會得到它。我發現的東西,如果我插入CC到我的Xpage然後設置Field1.ClientID的值,那麼我不會得到錯誤。如果我的屬性簡單地稱爲Field1_ClientID,並且不必設置該值,我也不會收到錯誤。 – 2012-04-09 12:52:41

2

布魯斯,

compositeData是一個屬性映射。如果它沒有值,compositeData.Field1將爲null(因爲它也是一個屬性映射)。

所以你可以做到這一點;

compositeData.Field1= { ClientID: getClientId("Field1") } 
0

好吧,我做了自定義控件的組功能的快速測試(以前從未使用過)。

在該組內給出了一組「testGroup」和「testProp」的屬性。

在beforePageLoad以下工作:

compositeData.testProp = "example1"; 
print("Test1: " + compositeData.testProp); 

以下沒有工作:

compositeData.testGroup.testProp = "example2"; 
print("Test2: " + compositeData.testGroup.testProp); 

因此,我相信,集團財產可能僅僅是邏輯分組的屬性,而不是定義對象的方式具有多個屬性。嘗試引用屬性而不是組。

+0

你是什麼意思,「試試只參考屬性而不是組。」?能夠將這些屬性分組是很好的。 – 2012-04-10 12:50:25

+0

作爲我的代碼示例顯示它是否可以通過使用compositeData.value而不是compositeData.group.value獲得值。你仍然可以將它們分組,但是當引用它們時,通過compositeData.value調用它們 – 2012-04-10 13:59:35

+0

我想我現在明白了。我可以創建屬性作爲一個組的一部分,但仍然可以通過忽略組名來設置它們?這對我不起作用。我想要做的就是像Field1.Value,Field1.ID,Field2.Value,Field2.ID。 – 2012-04-10 18:02:10

相關問題