[更新]
回应弗兰克的建议:
我可以在客户端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网格来查看我的视图。该应用使用带有动态内容控件的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;
});
但我无法弄清楚如何设置请求parm并进行局部刷新。
我应该在这里拨打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>
答案 0 :(得分:0)
我认为你可以做这样的事情。从双击事件中调用部分刷新:
$("#grid").on("dblclick", "tr", function(e) {
var grid = $("#grid").data("kendoGrid");
var unid = grid.dataItem($(this)).unid;
XSP.partialRefreshGet('#{id:dynamicCustomControl}',params: {
'controlName': unid
})
});
这将部分刷新动态自定义控件,并通过请求参数从网格传递unid。在服务器端,您可以执行类似以下代码的操作来使用请求参数(使用XPage中的param
对象):
<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:param.controlName || "ccViewTickets.xsp"}]]>
</xp:this.pageName>
</xp:include>
</xe:dynamicContent>