Datatables 数据表状态保存刷新在关闭对话框后继续POST请求
我正在使用XPages上的Data Tables jQuery插件向用户显示我们的价目表。价目表管理员在搜索类似项目时,单击项目说明以通过对话框修改项目。由于价目表中有1000多个项目,因此有必要保存搜索,同时刷新表格,以便用户可以在关闭后查看列表中的更改,然后再转到搜索中的下一个项目。由于有大量条目刷新整个页面,因此在打开对话框时,我只刷新对话框,在我在DataTable上引入stateSave之前,该对话框一直工作正常。现在的问题是,当我关闭对话框时,页面继续发出POST请求,以使用bean中的随机项再次打开对话框 任何帮助都将不胜感激Datatables 数据表状态保存刷新在关闭对话框后继续POST请求,datatables,xpages,Datatables,Xpages,我正在使用XPages上的Data Tables jQuery插件向用户显示我们的价目表。价目表管理员在搜索类似项目时,单击项目说明以通过对话框修改项目。由于价目表中有1000多个项目,因此有必要保存搜索,同时刷新表格,以便用户可以在关闭后查看列表中的更改,然后再转到搜索中的下一个项目。由于有大量条目刷新整个页面,因此在打开对话框时,我只刷新对话框,在我在DataTable上引入stateSave之前,该对话框一直工作正常。现在的问题是,当我关闭对话框时,页面继续发出POST请求,以使用bean
<xp:div style="width:30%" styleClass="mg20">
<xp:panel id="tablePanel">
<table id="keyItemsPLTable">
<thead>
<tr>
<th>Description</th>
<th>Code</th>
</tr>
</thead>
<tbody>
<xp:repeat id="repeat1" rows="10000"
var="rowData">
<xp:this.value><![CDATA[# #javascript:itemBean.getPlItems("All","Price List Sales Cat Only")}]]></xp:this.value>
<tr>
<td>
<xp:link escape="true"
text="#{rowData.description}" id="link3">
<xp:eventHandler event="onclick"
submit="true" refreshMode="partial" refreshId="dialog1" execMode="partial"> //Problem occurs due to this partial refresh
<xp:this.action><![CDATA[#{javascript:itemBean.setPlItem(rowData);
var dialog = getComponent("dialog1");
dialog.show()}]]></xp:this.action>
</xp:eventHandler>
</xp:link>
</td>
<xp:text tagName="td" escape="true"
id="computedField1" value="#{rowData.code}">
</xp:text>
</tr>
</xp:repeat>
</tbody>
</table>
<xp:scriptBlock>
<xp:this.value><![CDATA[
$(document).ready(function() {
var table = $('#keyItemsPLTable').DataTable( {
stateSave: true, //https://datatables.net/reference/option/stateSave
stateDuration: -1//This doesn't seem to work. https://datatables.net/reference/option/stateDuration
});
});
]]></xp:this.value>
</xp:scriptBlock>
</xp:panel>
</xp:div>
<xe:dialog id="dialog1">
<xp:panel id="panelFullDialog" styleClass="mg20">
<xp:div styleClass="mg20">
<xp:inputText id="inputDesc"
value="#{itemBean.plItem.description}" styleClass="wd200">
</xp:inputText>
</xp:div>
<xp:div styleClass="mg20">
<xp:inputText value="#{itemBean.plItem.code}"
id="inputText2" styleClass="wd200">
</xp:inputText>
</xp:div>
<xe:dialogButtonBar id="dialogButtonBar1">
<xp:button value="Cancel" id="button4">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[XSP.closeDialog('#{id:dialog1}')]]></xp:this.script>
</xp:eventHandler>
</xp:button>
<xp:button id="button1">
<xp:this.value><![CDATA[Save & Close]]></xp:this.value>
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="tablePanel">
<xp:this.action><![CDATA[#{javascript:itemBean.savePLItem();
var dialog = getComponent("dialog1");
dialog.hide();
}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xe:dialogButtonBar>
</xp:panel>
</xe:dialog>
描述
代码
//此部分刷新导致出现问题
如果您试图在关闭对话框后刷新tablePanel
,请不要将其作为刷新ID。hide()
方法在对话框关闭后获取要刷新的区域的参数。这是因为SSJS需要回发到浏览器以发出关闭对话框的调用,因此它将传递客户端JavaScript调用以发出GET请求,以刷新作为hide()
方法参数传递的任何ID。请参阅。如果您试图在关闭对话框后刷新tablePanel
,请不要将其设置为刷新ID。hide()
方法在对话框关闭后获取要刷新的区域的参数。这是因为SSJS需要回发到浏览器以发出关闭对话框的调用,因此它将传递客户端JavaScript调用以发出GET请求,以刷新作为hide()
方法参数传递的任何ID。请看。谢谢保罗,这一切都是有意义的,希望能加快我在Save上的许多慢速对话。您是否能够提供一个示例,说明我如何使用参数为dialog.hide()编写代码。我不是在偷懒,我已经试过了。如果是SSJS,你只需要使用你试图刷新的区域的id,所以dialog.hide(“tablePanel”)
。在浏览器的“网络”选项卡上,当单击对话框上的按钮调用服务器时,您应该会看到一篇文章,然后当网页检索到您正在刷新的区域(例如tablePanel)的最新HTML时,收到响应后,您会看到一个GET请求。谢谢Paul,我理解,但不幸的是,这并不能解决问题。只有从打开对话框的链接-show()中删除部分刷新和部分执行,才能阻止关闭对话框后继续打开对话框。我把它们放进去了,因为对话框打开的速度比没有打开的快多了。谢谢Paul,这一切都是有意义的,希望能加快我在Save上的很多慢对话。您是否能够提供一个示例,说明我如何使用参数为dialog.hide()编写代码。我不是在偷懒,我已经试过了。如果是SSJS,你只需要使用你试图刷新的区域的id,所以dialog.hide(“tablePanel”)
。在浏览器的“网络”选项卡上,当单击对话框上的按钮调用服务器时,您应该会看到一篇文章,然后当网页检索到您正在刷新的区域(例如tablePanel)的最新HTML时,收到响应后,您会看到一个GET请求。谢谢Paul,我理解,但不幸的是,这并不能解决问题。只有从打开对话框的链接-show()中删除部分刷新和部分执行,才能阻止关闭对话框后继续打开对话框。当对话框打开的速度比没有打开的速度快得多时,我就把它们放进去了。