Xpages XSP.confirm后不会触发XSP.partialRefresh

Xpages XSP.confirm后不会触发XSP.partialRefresh,xpages,xpages-extlib,Xpages,Xpages Extlib,我的问题的简短概述:我有一个包含多个字段的大表单,其中一个是xe:djFilteringSelect,另一个是xp:combobox。xp:combobox根据筛选选择中选择的值进行计算。现在,我的客户希望,如果他们更改已保存文档的筛选选择值,他们应该得到警告提示。因此,我想在djfilteringselect的onChange事件中添加一条确认消息,以取消它的SSJS代码,从而更改组合框 提示用户确认(“更改值?…”)框没有什么大不了的,但是如果用户选择“否”,重新设置值(在客户端)会给我带来

我的问题的简短概述:我有一个包含多个字段的大表单,其中一个是
xe:djFilteringSelect
,另一个是
xp:combobox
xp:combobox
根据筛选选择中选择的值进行计算。现在,我的客户希望,如果他们更改已保存文档的筛选选择值,他们应该得到警告提示。因此,我想在
djfiltering
select的onChange事件中添加一条确认消息,以取消它的SSJS代码,从而更改组合框

提示用户确认(“更改值?…”)框没有什么大不了的,但是如果用户选择“否”,重新设置值(在客户端)会给我带来很多麻烦

我已经尝试过:

如果我使用简单确认操作,则所有进一步的更改操作都将被取消,但
djFilteringSelect
字段保留其用户选择的值。因此,如果我在过滤上触发部分刷新,选择文档显示的原始值,但我不知道在哪里添加它,因为没有onCancel,或者我在这里遗漏了什么

我还在CSJS的窗口中进行了尝试。确认XSP。如果用户选择“否”,则确认并使用XSP.partialrefreshGet()重置值手册,但在这种情况下,部分刷新不起作用:

if(!XSP.confirm("execute?")){                                   
    XSP.partialRefreshGet("#{id:repeat1}",{
      onStart: function () {console.log("start");},
      onComplete: function () {console.log("finish");},
      onError: function () {console.log("error");}  
         });
    return false;
}
如果我将部分刷新移动到一个函数,并从firebug调用它,它工作得很好,但是如果我在If(confirm){}中调用它,它什么也不做。返回false不起作用,而SSJS不执行。文档中的值不会更改(按预期),但djFilteringSelect会在客户端保留选定的值

我还尝试了MarkLeusink的部分刷新,但问题是相同的

如果我将值设置回手动,而不是使用dijit.byId(item.setValue)的部分刷新,它将在另一个onChange事件中重新调用。。。循环更新:如果我使用dijit.byId(item).set(“value”,newVal,false),onChange不会直接触发,它会按预期更改值,但当过滤选择失去ist?焦点!?…时,onChange会触发

所以我的问题是:

  • 如果用户选择“否”,是否有方法在确认操作后执行任何代码
  • 为什么我的CSJ中的部分刷新不起作用(我在firebug中没有看到任何流量,我也没有收到任何错误,甚至刷新的错误也没有被触发)
  • 有人知道用不同的方法来解决我的问题吗
  • 更新
    我当前的“解决方案”是使用window.location.reload()而不是XSP.partialRefresh来重新加载站点。但是这个解决方案并不能真正让我满意,因为在IE中,整个页面都在闪烁。。在firfox中,我可以接受它。

    对我来说,你的方法看起来太复杂了,无法开始:一旦选择了不同的选项后触发了更改,因此即使你成功了,你也需要记住以前的选择,以便重置值。您是否尝试在用户更改值之前显示确认?如果取消保存操作,则除xe:djFilteringSelect自动重置外的其他字段。过滤选择后面的输入也会被重置。但是重置不会显示在dojo组件中。如果我在确认后通过另一个按钮或firebug进行部分刷新,它将显示原始值。是否使用MSIE进行测试?在项目失去焦点之前,浏览器不会启动onChange:我正在IE和Firefox中测试。。onchange激发正确,但其中的XSP.partialRefresh未执行。。。我甚至没看到一只火虫在里面。