根据后端文档是否更新,部分刷新改变面板

Partial refresh change panel depending on whether backend document has been updated

我有一个预订表格,需要在有人点击预订按钮时检查预订是否仍然可用。如果它可用,我希望处理按钮后面的 SSJS 代码(这会更新预订表格上的一些值),但是如果在检查预订时它不再可用,我想部分刷新一个不同的面板(主面板中的一个面板),因此建议用户它不可用,他们可以去寻找另一个合适的约会(这是通过提供不同的面板来完成的)。

为了做到这一点,我编写了要在表单按钮的部分更新中更新的元素。

var tbooked = document1.getItemValueString("booked");

if (tbooked =="Free") {
    return 'mainPanel'}
else {
    return 'dialogPanel'}

然后我添加了以下代码以在选择按钮时执行。

var tbooked = document1.getItemValueString("booked");

if (tbooked =="Free") {
    Set a bunch of viewScope variables.
    Also save the document
}

似乎 return 要更新的面板的代码没有执行 if then 的 'else' 部分 - 我是否使用不正确?

您将第一个代码片段放入按钮事件处理程序的 refreshId 属性 中。此代码在呈现的页面发送到浏览器之前 执行。这对您的情况来说还为时过早,因为此时预订始终免费。

最简单的方法是进行全面更新。

如果这不可行,则使用 XSP.partialRefreshPost(id, ...)XSP.partialRefreshGet(id, ...) 尝试预订,如果成功则刷新 mainPanel,否则刷新 dialogPanel。