Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XPages删除服务器上的文档并触发部分刷新_Xpages - Fatal编程技术网

XPages删除服务器上的文档并触发部分刷新

XPages删除服务器上的文档并触发部分刷新,xpages,Xpages,我正在努力解决以下问题 在我的XPage上有一个viewpanel组件,但它并没有绑定到notesview数据源,而是绑定到存储在viewScope中的hashmap。原因超出了我的问题范围 由于视图中的行实际上没有链接到文档,因此无法使用标准复选框和相关的GetSelectedDocId。但是,我确实需要一种删除所选文档的方法。我有一个带有复选框的列,其中包含对应行的unid 长话短说。我有一个UNID数组,希望执行一个操作,该操作执行以下操作: 显示请求确认的dijit.对话框 如果单击“

我正在努力解决以下问题

在我的XPage上有一个viewpanel组件,但它并没有绑定到notesview数据源,而是绑定到存储在viewScope中的hashmap。原因超出了我的问题范围

由于视图中的行实际上没有链接到文档,因此无法使用标准复选框和相关的GetSelectedDocId。但是,我确实需要一种删除所选文档的方法。我有一个带有复选框的列,其中包含对应行的unid

长话短说。我有一个UNID数组,希望执行一个操作,该操作执行以下操作:

  • 显示请求确认的dijit.对话框
  • 如果单击“确定”,则调用执行以下操作的函数:
    • 删除基于UNID的文档
    • 刷新视图面板
我正在考虑以下两种解决方案,但不确定哪一种是最好的(也许是第三种,甚至更简单的解决方案?)

  • 让dojo对话框的OK按钮调用一个函数,该函数对XAgent或普通的LS代理执行XmlHttpRequest

  • 让OK按钮触发在服务器上运行的eventhandler,如JeremyHodge所述。但是我如何将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