2015-03-25 64 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