【发布时间】:2017-03-22 23:40:39
【问题描述】:
[更新]
回应弗兰克的建议:
我可以让代码在客户端 javascript 中正常工作 - 必须稍微修改一下:
$("#grid").on("dblclick", "tr", function(e) {
var grid = $("#grid").data("kendoGrid");
var unid = grid.dataItem($(this)).unid;
XSP.partialRefreshGet("#{id:dynamicCustomControl}",{params:{"controlName":"ccFormTicket.xsp", "key":unid}});
});
所以我发送了两个部分,controlName 以及作为 UNID 的键。
我在动态控件中的初始代码是获取 viewScope 变量,而不是参数。我不知道如何获取下面代码中的参数...
[我可能弄乱了 Eric 对我的代码的格式。我忘记了如何做到这一点。我会修复]
<xp:div
styleClass="col-lg-10"
id="content">
<xe:dynamicContent
id="dynamicCustomControl">
<xp:this.facets></xp:this.facets>
<xp:include
id="customControlInluder">
<xp:this.pageName>
<![CDATA[${javascript:viewScope.controlName|| "ccViewTickets.xsp"}]]>
<![CDATA[${javascript:param.controlName || "ccViewTickets.xsp"}]]>
</xp:this.pageName>
</xp:include>
</xe:dynamicContent>
</xp:div>
我的应用程序将 Kendo UI Grids 用于我的视图。该应用使用带有动态内容控件的 Xpage 来加载内容(见下文)。
创建新表单的按钮将 viewScope 变量设置为自定义控件并进行部分刷新。这工作得很好。
在编辑现有记录时我需要做同样的事情,但还需要传入带有文档 unid 的 requestScope var "key"。
在网格的客户端javascript中,我可以获取被点击元素的unid:
$("#grid").on("dblclick", "tr", function(e) {
var grid = $("#grid").data("kendoGrid");
var unid = grid.dataItem($(this)).unid;
});
但我不知道如何设置请求参数并进行部分刷新。
我应该在这里调用 RPC 吗?
<xp:button
id="button2"
type="button"
styleClass="btn btn-primary"
disableTheme="true"
value="Create OTM Ticket">
<xp:eventHandler
event="onclick"
submit="true"
refreshMode="partial"
refreshId="dynamicCustomControl"
onComplete="XSP.partialRefreshGet('#{id:dynamicCustomControl}')">
<xp:this.action><![CDATA[#{javascript:var x = "ccFormTicket.xsp"
viewScope.controlName = x;
getComponent("dynamicCustomControl").show(null)}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
动态内容控制
<xp:div
styleClass="col-lg-10"
id="content">
<xe:dynamicContent
id="dynamicCustomControl">
<xp:this.facets></xp:this.facets>
<xp:include
id="customControlInluder">
<xp:this.pageName>
<![CDATA[${javascript:viewScope.controlName||"ccViewTickets.xsp"}]]>
</xp:this.pageName>
</xp:include>
</xe:dynamicContent>
</xp:div>
【问题讨论】:
标签: xpages