2015-03-25 60 views
1

我正在嘗試開發一個Dojo DataGrid,它從分類的BidsByDriver視圖中返回用戶的文檔,並允許他們編輯網格中的優先級字段。在過去使用屬性過濾categoryFilter的障礙之後,使用xe:viewFileItemService讀/寫服務很容易設置。然而,xe:viewFileItemService作爲數據源的問題在於,在顯示網格中的用戶文檔之後,它將爲視圖中的每個條目顯示空行。如何添加讀/寫customRestService以支持在Dojo DataGrid中進行編輯?

enter image description here

爲了解決空行我去創造一個XE的路徑:返回的jasonData只是當前用戶的文檔customRestService。這解決了我的空行問題,但是我的數據源沒有以正確的讀/寫格式來支持併網編輯。

這裏是生成的JSON數據返回的形式XE:customRestService ...

[{"Driver":"ddd","BidID":"123","Priority":"1","Trip":"644"}, 
{"Driver":"ddd","BidID":"123","Priority":"2","Trip":"444"}, 
{"Driver":"ddd","BidID":"123","Priority":"4","Trip":"344"}, 
{"Driver":"ddd","BidID":"123","Priority":"4","Trip":"643"} 
] 

這裏是道場模塊我加載:

<xp:this.resources> 
    <xp:dojoModule name="dojo.store.JsonRest"></xp:dojoModule> 
    <xp:dojoModule name="dojo.data.ObjectStore"></xp:dojoModule> 
</xp:this.resources> 

,這裏是開發腳本數據存儲網格:

<xp:scriptBlock id="scriptBlock2"> 
     <xp:this.value><![CDATA[ 
    var jsonStore = new dojo.store.JsonRest({target: "InGridCustom.xsp/pathinfo"}); 
    var dataStore = dojo.data.ObjectStore({objectStore: jsonStore}); 
    ]]></xp:this.value> 
</xp:scriptBlock> 

所有這些工作非常好,除了位o n提供網格編輯支持。任何想法讚賞。

+0

Paul,您是否爲您的網站啓用HTTP PUT?並且這個答案有幫助嗎? http://stackoverflow.com/a/20383456/785061 – 2015-03-25 13:11:54

+0

啓用HTTP PUT後,PATCH n DELETE仍然沒有區別...我的custonRestService仍然不支持併網編輯 – 2015-03-25 13:55:50

回答

1

你如何保存更改?使用自定義REST服務,我不希望保存數據存儲會對後端數據進行任何更改,這就是刷新將其恢復爲原始值的原因。

我認爲您需要在自定義REST服務中編寫doPost方法來處理服務器端的更改以及客戶端代碼以調用post方法並將更新傳遞給進程連同文檔ID)。

+0

我懷疑你是在正確的軌道上,但是我不得不爲這一個「離開電網」...不值得痛苦,因爲考慮使用dataView控件有多容易。 – 2015-03-31 20:48:10

0

修訂答:

我會嘗試一個或這兩種方法來解決您的問題。

1)在您的視圖中有一個類別,並使用categoryFilter並使用hack使服務僅返回正確的值。在這個問題中概述:XPages Dojo Grid editable cell does not save value when REST Service save() method is called

2)將其餘服務類型更改爲與#1組合使用viewJsonService。如果出現錯誤,請仔細檢查每個提到的配置文檔。在關於配置和使用Firebug以確保使用正確的方法的鏈接問題中,還要注意Per的註釋。更新必須是PUT,POST不會與viewJsonService一起使用。


原來的答案(對於評論的上下文)

保羅,

我相信,你需要有代碼一個按鈕來保存更改回來。也許你會這樣做,但你沒有提及它,它不在你的屏幕截圖中。 Per提到的步驟是非常必要的,所以它很好,你有它的照顧。該按鈕是必要的,以便「提交」更改。內嵌編輯的行爲不會觸發PUT調用。如果你仔細想想,你不會希望在每次更改之後進行更新,而是在用戶完成編輯時進行一次更新。

如果您在今天晚上還沒有弄清楚,我有工作代碼,可以寄給您,但在工作時無法使用。

+0

我沒有顯示代碼,但我有一個按鈕將更改保存在其餘服務中並刷新網格。我的問題是,在更改一行中的優先級字段,然後移動下一行後,我在前一行中所做的更改將丟失並返回到其原始值。我相信這是因爲我的customRestService生成的數據源的格式不正確,不支持寫入操作。 – 2015-03-25 17:29:32

+0

您是否嘗試viewJSONService而不是使用viewItemFileService或您的customRestService?我最終得到它的工作。也可以嘗試與布拉德B聯繫,他一段時間是杜喬格里德先生。我有一段時間沒有見過他。 – 2015-03-25 17:45:50

+0

是的,嘗試過。 viewJsonService也將返回如上所示圖像的空行,並且在與網格內編輯一起使用時會產生錯誤。 – 2015-03-25 18:32:48