2013-06-12 87 views
3

將數據綁定到表單時存在很多問題。這很簡單。我有一個表單使用幾個計算字段,它們使用@DbLookup來抽取數據,以便根據用戶選擇的下拉菜單填充字段。問題是;計算字段中沒有一個將任何值保存爲其綁定的形式。唯一保存在表單上的數據是手動選擇的數據(在下拉菜單的情況下)或手動輸入。當我使用編輯框並且不使其成爲「只讀」時,數據可以很好地保存。爲什麼這很難?將計算的xpage字段綁定到表單字段

回答

1

像往常一樣,戴夫把我引向了一個有效的工作。處於JavaScript體驗的幼蟲階段,我相信有更好的方法來做到這一點。我很高興它的工作原理。她是我放入Xpage的QuerySave事件中的代碼。

var cost1 = getComponent('ItemCost1').getValue(); 
var uom1 = getComponent('UOM1').getValue(); 
var Num1 = getComponent('ItemNum1').getValue(); 
var tot1 = getComponent('Total1').getValue(); 

docuent1.replaceItemValue("ItemCost_1", cost1), 
document1.replaceItemValue("ItemUOM_1", uom1), 
document1.replaceItemValue("ItemNum_1", Num1), 
document1.replaceItemValue("CostTotal_1", tot1) 

我有這30次迭代所以它可能工作的一種笨重,但詞是作品。如果有人有更好的方法來獲得相同的結果,請發佈它,以便我可以學到一些東西。感謝大家的幫助。

1

您會希望將您從@DbLookup收到的數據放在編輯框中。計算字段就像傳統Notes開發中的「計算顯示」字段。您可以選擇是否允許用戶通過只讀屬性更改值。如果你想只讀的值,它聽起來就像你做

也看到了這個問題:ReadOnly field in Xpage not submitted

+0

絕對會更好地通過SSJS來保存它,正如Dave下面所說。 –

2

馬克 - 夫婦在這裏我想辦法......但讓我們走,雖然東西。

只讀在編輯框中防止保存。這說得通。 XPages不應該嘗試保存標記爲「只讀」的內容。

正如史蒂夫所說,你最好在這裏計算一個字段。然而,設置這些值,如果它們綁定到文檔,那麼我認爲它們會保存正常。

另一種方法是使用作用域變量。當您在數據點...你可以將它放入類似範圍的變量: viewScope.put(「MyField的」 myvalue的)

那麼你計算字段可以綁定到viewScope變量「myvalue的」。

但是,這當然不會保存迴文檔,因爲它沒有綁定到文檔。所以,如果你想要這種方法在文檔保存事件中你做了什麼......然後你使用SSJS將值分配給文檔。是這樣的:

document1.replaceItemValue( 「MyField的」,viewScope.get( 「MyField的」);

由於XPages中已基本在同一個文檔事件Notes客戶端這似乎很熟悉了

希望這有助於

戴夫 - NotesIn9.com

Disclamer:。我是一個拉斯維加斯之旅後回答這個從平面所以請因素是進入我的答案的質量:)

+0

謝謝戴夫。我會嘗試你的建議。我只是認爲這會更簡單些。我有一大堆需要這個的領域。 –

+0

你讓我走上正軌。我做了一些稍微不同的事情,只是因爲我對Scoped變量的工作方式仍然有點模糊。以下是我在查詢保存文檔事件中使用的代碼。 「var cost1 = getComponent(」ItemCost1「).getValue(); document1.replaceItemValue(」ItemCost_1「,cost1);」。唯一的問題是;我有90個可能的領域,我必須這樣做。 –