我在左栏的应用程序布局上有一个xe:navigator(称为navigator1)。在右列中,我有一个dynamicContent控件。在导航器的onClick事件中,我对navigator1进行了部分刷新,但是有效但动态内容不会刷新。我可以做一个完全刷新,两者都会刷新,但性价比。我把它放在onClick的客户端:
XSP.partialRefreshGet('#{id:dynamicContent1}');
return true
但是当我这样做时,dynamicContent1没有刷新。我认为我的语法是正确的。如果在服务器端我在dynamicContent1上进行部分刷新,则会正确刷新它,但navigator1不会刷新。所以问题是可以在同一个onClick事件上进行两次部分刷新吗?
答案 0 :(得分:5)
如果我正确地阅读了您的问题,这只是一个时间问题:当您在同一事件中定义客户端代码和服务器代码时,始终首先执行客户端代码。因此,在执行dynamicContent
事件之前,它会刷新navigator
控件。
将CSJS代码移至onComplete
的{{1}}属性。此属性未显示在事件的“漂亮面板”中,因此您需要直接导航到eventHandler
标记(在源XML中或通过大纲),您将找到{{ 1}}列在所有属性下。
将刷新代码放在<xp:eventHandler />
中将确保第二次刷新不会发生,直到第一次完成后 ,这将允许第二个目标反映由事件。
奖金提示:您还可以进行链接刷新:
onComplete
这允许您根据需要刷新任意数量的目标,但适用相同的规则:如果您需要任何目标“了解”事件中对数据或组件所做的更改,则需要触发该事件的onComplete
属性中的链的起点, not 作为事件本身的客户端代码。