从视图中获取所选文档并另存为单独的文档文档、视图、另存为、所选

由网友(世界与我无关)分享简介:我正在尝试从视图中获取选定的文档并另存为单独的文档这是XPage的设计顶部有一个组合框、一个带有复选框的视图(该视图用于选择)、一个用于保存来自该视图和组合框的选择值的按钮。此外,还会有另一个显示保存的值的视图。从这个post中,我可以获得所选文档的unid并保存为view范围变量。"添加"按钮可以保存从组合框和视图中...

我正在尝试从视图中获取选定的文档并另存为单独的文档

这是XPage的设计

顶部有一个组合框、一个带有复选框的视图(该视图用于选择)、一个用于保存来自该视图和组合框的选择值的按钮。此外,还会有另一个显示保存的值的视图。

选择文档视图模式

从这个post中,我可以获得所选文档的unid并保存为view范围变量。"添加"按钮可以保存从组合框和视图中选择的值,并在另一个视图中显示结果。

但是,如果我在视图中选择多个值并单击保存,则会将所有值保存在一个文档中。因此,我尝试使用for循环遍历查看和保存中的选定值,但它仍然只在一个文档中保存一个值。

   <xp:table id="table1a">
    <xp:tr>
        <xp:td id="table1">
            <xp:comboBox id="comboBox1"
                dojoType="dijit.form.ComboBox" style="width:250.0px"
                value="#{document1.Category}">
                <xp:selectItems id="selectItems3">
                    <xp:this.value><![CDATA[#{javascript:var SetFirstValueBlank = @Text("");
                    return SetFirstValueBlank;
                }]]></xp:this.value>
                </xp:selectItems>
                <xp:selectItems id="selectItems4">
                    <xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn(@DbName(), "CategoryListView", 1));}]]></xp:this.value>
                </xp:selectItems>
                <xp:eventHandler event="onchange" submit="true"
                    refreshMode="partial" refreshId="table1a">
                </xp:eventHandler>
            </xp:comboBox>
            <xp:text escape="true" id="computedField1">
            </xp:text>
        </xp:td>
    </xp:tr>
    <xp:tr>
        <xp:td>
            <xp:viewPanel rows="10" id="viewPanel1" var="rowData">
                <xp:this.data>
                    <xp:dominoView var="view1"
                        viewName="hListView">
                    </xp:dominoView>
                </xp:this.data>
                <xp:viewColumn columnName="ItemName"
                    id="viewColumn1" style="background-color:rgb(255,255,255)"
                    showCheckbox="true">
                    <xp:viewColumnHeader value="Item Name"
                        id="viewColumnHeader1" rendered="false">
                    </xp:viewColumnHeader>
                </xp:viewColumn>
                <xp:this.facets>
                    <xp:pager partialRefresh="true"
                        layout="Previous Group Next" xp:key="footerPager" id="pager2">
                    </xp:pager>
                </xp:this.facets>
            </xp:viewPanel>
            <xp:br></xp:br>
            <xp:button value="Add" id="button1"
                style="height:35.0px">
                <xp:eventHandler event="onclick" submit="true"
                    refreshMode="complete">
                    <xp:this.action><![CDATA[#{javascript:var Category = getComponent("comboBox1").getValue();
                    var viewPanel=getComponent("viewPanel1");
                    var docIDArray=viewPanel.getSelectedIds();
                    var unidArray = new Array();
                    for(i=0; i < docIDArray.length; i++) {
                   var unid=database.getDocumentByID(docIDArray[i]).getUniversalID();
                      unidArray.push(unid);
                    }
                    viewScope.put("unidArray", @Implode(unidArray, ","));
                for(var i=0; i< unidArray.length;i++ )
                {
                    document1.replaceItemValue("ItemName", unidArray[i]);
                    document1.save();
                }
        }]]></xp:this.action>
                </xp:eventHandler>
            </xp:button>
            <xp:br></xp:br>
            <xp:br></xp:br>
            <xp:viewPanel rows="6" id="viewPanel2">                     
                    <xp:this.data>
                        <xp:dominoView var="view2" viewName="CategoryItemView">
                            <xp:this.categoryFilter><![CDATA[#{javascript:getComponent("comboBox1").getValue();}]]></xp:this.categoryFilter>
                        </xp:dominoView>
                    </xp:this.data>
                    <xp:this.rendered><![CDATA[#{javascript:var value = getComponent("comboBox1").getValue();
                    if(value =="" || value == null)
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }}]]></xp:this.rendered><xp:viewColumn id="viewColumn4" columnName="Category" rendered="false">
                        <xp:this.facets>
                            <xp:viewColumnHeader xp:key="header" id="viewColumnHeader4" value="Category">
                            </xp:viewColumnHeader>
                        </xp:this.facets>
                    </xp:viewColumn>
                    <xp:viewColumn id="viewColumn3" columnName="$10">
                        <xp:this.facets>
                            <xp:viewColumnHeader xp:key="header" id="viewColumnHeader3" value="Category">
                            </xp:viewColumnHeader>
                        </xp:this.facets>
                    </xp:viewColumn>
                    <xp:viewColumn columnName="ItemName" id="viewColumn2">
                        <xp:viewColumnHeader value="Item" id="viewColumnHeader2">
                        </xp:viewColumnHeader>
                    </xp:viewColumn>
                    <xp:this.facets>
                        <xp:pager partialRefresh="true" layout="Previous Group Next" xp:key="footerPager" id="pager3">
                        </xp:pager>
                    </xp:this.facets></xp:viewPanel><xp:br></xp:br></xp:td>
                </xp:tr>
            </xp:table>

请告诉我如何在不同的文档中保存多个值?谢谢。

(编辑:删除一些以前的内容)

我想我首先将重点放在如何将多个值另存为单独的文档,因为这部分在程序中相当重要,一旦我可以另存为单独的文档,就会有另一个函数需要处理结果。

我检查了代码,我想我仍然会使用for循环,但不幸的是,它仍然只保存了一个文档。

推荐答案

我猜Document1对象绑定到XPage上的,该对象仅在打开XPage时创建。要使您的按钮创建多个文档,需要修改for循环:

var oneOfMany : NotesXspDocument;
for(var i=0; i< unidArray.length;i++ )
{
  oneOfMany = database.createDocument();
  oneOfMany.replaceItemValue( "Category",  document1.getItemValue("Category" ) );
  oneOfMany.replaceItemValue("ItemName", unidArray[i]);
  oneOfMany.replaceItemValue("form", "MyFormName" );
  oneOfMany.save();
}

因为它不再使用Document1,所以此循环将需要填充您需要的其他项,如表单,例如MyFormName,如本例所示。

阅读全文

相关推荐

最新文章