2014-09-19 50 views
1

我的場景:Xpages使用'旗幟'爲不同的文檔。結構相同xpage

xpage(文檔內容)結構複雜。我有一個第一按鈕將打開此XPage上,其在postNewDocument

Contr.replaceItemValue("txt_codformularmain","01") // I use this field as a flag. 

現在,還有一個按鈕,組成同一的XPage ...但在這種情況下,我不希望的XPage有所不同,換句話說,有一些額外的/顯示的領域。

我可以在postNewDocument添加其他代碼,如下所示:

Contr.replaceItemValue("txt_codformularmain2","01") 

後來,在一些看法,我會過濾由這2個領域的上市文件:一些意見將上市的文件,其中txt_codformularmain = 01,txt_codformularmain2 = 01的其他視圖,依此類推。

所有的字段都在同一個表單元素上。 (我可以很容易地創建2個不同的xpages,有2個文檔內容,但在屬性onOpenonWebAccess設置,我可以只添加一個xpage)

但是,我認爲這不是最好的方法。因爲在這兩種情況下,都會發生postNewDocument,並且這兩個字段的值都是01

在經典的蓮花筆記編程中,我只使用了一個字段(標誌),並且對於每個不同的按鈕,在按鈕的代碼中,我只是在構成newDocument之前更改了字段值:01,02等等。

我應該使用另一種/更好的方法嗎?

我可能會創建所需要有領域的新形式,以及創建綁定到形成一個新的XPage ...

+0

可能更好的方法是在頁面加載前打開頁面時設置一個範圍變量。接下來使用不同的文檔進行查看。並根據範圍變量 – 2014-09-19 06:05:54

+0

加載這些視圖,但是如何將範圍變量設置爲一個值 - 取決於哪個按鈕被點擊? – 2014-09-19 06:07:44

+0

這些按鈕不在同一個xpage – 2014-09-19 06:10:01

回答

1

dominoDocument.isNewNote()會告訴你,如果它是一個新的文檔或沒有。您可以基於此計算可見性。

如果它基於一個字段值,然後再次設置可見性基於面板應該是可見的值 - 而不是getComponent()。getValue()使用dominoDocument.getItemValueString()假設它是一個文本最佳實踐領域。在綁定到正在檢查的字段的控件的onblur事件中,觸發部分刷新。如果頁面上有驗證,您將需要修改默認的局部刷新設置。

一旦您熟悉這種技術,就開始考慮使用dataContext來保持區域是否可見,並在呈現的屬性中引用該dataContext變量。這樣做的好處不僅在於性能,而且您可以給dataContext一個更好的變量名稱,以便在支持應用程序時更清晰地顯示它背後的邏輯。例如,對於支持Notes客戶端應用程序的用戶而言,不清楚「01」或「02」是指什麼狀態。像「newDoc」,「published」等描述符在那裏有優勢。

另一種優化方法是使用動態內容控件。

但是這聽起來像你的XPage將會很複雜,而不會在這個階段增加更多的複雜性。

+0

謝謝@Paul,您的建議。我會試一試。 – 2014-09-19 08:03:02

+0

動態內容控件功能強大,在我的應用程序中使用了很多 – 2014-09-19 10:20:17

+0

但請注意動態內容控件。我有一個糟糕的經歷。我可以過錯嗎?但是很難在書裏深入。這就像一個單頁的應用程序難以獲得頁面源代碼。功能強大,但我認爲你需要小心。 – 2014-09-19 11:43:52