XPages删除服务器上的文档并触发部分刷新
我正在努力解决以下问题 在我的XPage上有一个viewpanel组件,但它并没有绑定到notesview数据源,而是绑定到存储在viewScope中的hashmap。原因超出了我的问题范围 由于视图中的行实际上没有链接到文档,因此无法使用标准复选框和相关的GetSelectedDocId。但是,我确实需要一种删除所选文档的方法。我有一个带有复选框的列,其中包含对应行的unid 长话短说。我有一个UNID数组,希望执行一个操作,该操作执行以下操作:XPages删除服务器上的文档并触发部分刷新,xpages,Xpages,我正在努力解决以下问题 在我的XPage上有一个viewpanel组件,但它并没有绑定到notesview数据源,而是绑定到存储在viewScope中的hashmap。原因超出了我的问题范围 由于视图中的行实际上没有链接到文档,因此无法使用标准复选框和相关的GetSelectedDocId。但是,我确实需要一种删除所选文档的方法。我有一个带有复选框的列,其中包含对应行的unid 长话短说。我有一个UNID数组,希望执行一个操作,该操作执行以下操作: 显示请求确认的dijit.对话框 如果单击“
- 显示请求确认的dijit.对话框
- 如果单击“确定”,则调用执行以下操作的函数:
- 删除基于UNID的文档
- 刷新视图面板
谢谢 您不能只使用带有对话框按钮控件的扩展库对话框。在这个按钮控件中,您可以 第三个选项是向datatable/视图中添加一列,其中包含复选框。在这些框的onchange事件上,添加一个eventhander,它将值添加到viewScope变量 页面底部(或顶部)的一个按钮,用于添加从hashmap中删除所选项目所需的代码,删除与所选id关联的文档。此按钮可以是viewpanel上部分刷新的普通按钮。当您遇到无法在对话框中使用按钮的错误时,请使用扩展库对话框控件,因为这可以为您解决该问题 如果当前用户没有删除文档的正确访问级别,则可以使用sessionAsSigner全局(假设设计元素的签名者具有正确的访问级别) 这样,您就不需要通过xmlthttprequest调用xAgent,并且可以使用默认的xpage方法
我希望这在某种程度上有所帮助,你能不能利用带有对话框按钮控件的扩展库对话框。在这个按钮控件中,您可以 第三个选项是向datatable/视图中添加一列,其中包含复选框。在这些框的onchange事件上,添加一个eventhander,它将值添加到viewScope变量 页面底部(或顶部)的一个按钮,用于添加从hashmap中删除所选项目所需的代码,删除与所选id关联的文档。此按钮可以是viewpanel上部分刷新的普通按钮。当您遇到无法在对话框中使用按钮的错误时,请使用扩展库对话框控件,因为这可以为您解决该问题 如果当前用户没有删除文档的正确访问级别,则可以使用sessionAsSigner全局(假设设计元素的签名者具有正确的访问级别) 这样,您就不需要通过xmlthttprequest调用xAgent,并且可以使用默认的xpage方法
我希望这在某种程度上有所帮助如果您使用了扩展库,我会支持@jjbsomhorst使用该对话框的扩展库。通常用户不阅读对话框。因此,方法是添加带有复选框的列,但不必麻烦使用事件处理程序,而是将它们都用它们的值绑定到一个scopeVariable。提交时,该变量将保存一个带有所选UNID的数组。 然后呈现一个列出这些文档并带有确认按钮的页面。虽然新页面提供了服务器往返的可能性,但用户实际关注的可能性要高得多。您可以做什么: 使用可编辑复选框呈现对话框的普通页面,当用户单击“删除”时,您可以设置类似于
viewScope.confirmDeleteMode=true的内容编码>并将其作为复选框的条件,使其为只读,并将所选行的类设置为“morituri”,在CSS中类似于。morituri{color:white;background color:red;font-weight:bold}
和一个新按钮“Confirm Delete”(并隐藏删除按钮)
这样,您只需要处理一个页面。如果您使用了一个扩展库,我会支持@jjbsomhorst使用该对话框的扩展库。通常用户不阅读对话框。因此,方法是添加带有复选框的列,但不必麻烦使用事件处理程序,而是将它们都用它们的值绑定到一个scopeVariable。提交时,该变量将保存一个带有所选UNID的数组。
然后呈现一个列出这些文档并带有确认按钮的页面。虽然新页面提供了服务器往返的可能性,但用户实际关注的可能性要高得多。您可以做什么:
使用可编辑复选框呈现对话框的普通页面,当用户单击“删除”时,您可以设置类似于viewScope.confirmDeleteMode=true的内容编码>并将其作为复选框的条件,使其为只读,并将所选行的类设置为“morituri”,在CSS中类似于。morituri{color:white;background color:red;font-weight:bold}
和一个新按钮“Confirm Delete”(并隐藏删除按钮)
这样,您只需要处理一个页面。我选择了选项2,它可以提供部分刷新id。我将UNID作为次值传递,如:
function doRemove(unids){
XSP.executeOnServer(ISP.UI.removeEventID, ISP.UI.removeRefreshID, {
params: {
'$$xspsubmitvalue': unids
},
onComplete : function() {
//alert('test')
}
});
}
ISP.UI.removeevented p
var unids = context.getSubmittedValue();
removeDocuments(unids); //SSJS function performing the actual delete
viewScope.reload = 'reload' //triggers the hashmap to be rebuild based on new documentcollection