2017-03-01 62 views
0

从此post,谢谢西蒙德利卡塔的回答和评论。我可以保存从视图中选择的文档并保存为单独的文档。是否可以在视图中进行数据绑定?

我对这种方法有疑问。如果我编辑文档,我点击将重定向到编辑页面的链接,编辑页面与之前文章的设计类似:顶部为组合框,带有复选框的视图(此视图用于选择),一个按钮,用于保存视图和组合框中的选择值。还有另一个视图将显示保存的值。

下面的代码,它可以保存为独立的文件,但它不能显示所保存的值,并把“嘀”符号中的复选框。

<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++) 
       { 
        var mdoc = database.createDocument(); 
        mdoc.appendItemValue("Form", "ItemForm"); 
        mdoc.appendItemValue("ItemName",unidArray[i]); 

        if(mdoc.computeWithForm(false,false)) 
        {  
         mdoc.save(true, true); 
         getComponent("computedField9").setValue("Record saved");   
        } 
        else 
        { 
        } 
       } 
     }]]></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> 

所以,据我所知,假设有一个编辑框或组合框,如果我使用数据绑定绑定到一个字段并保存它的一个编辑框或组合框可以显示保存的值编辑时。

所以我想知道“类似的方法”适用于视图吗?我在互联网上搜索,并没有太多关于它的信息。

我点击视图和在属性标签单击数据,我注意到视图不具有数据绑定到绑定到表单字段。

因此是有可能有数据在视图中结合使视图可以显示所保存的值时编辑。谢谢。

+0

嗨,如果我明白了这个问题,假设有一个“主页”和一个视图面板,并且源代码是使用CategoryItemView。文档打开模式为编辑,当点击特定值时将打开“编辑页面”。然后在“编辑页面”中,您的意思是在视图的复选框中选中了默认值(主页面中的选定值)? – beginner

+0

@beginner是的,你是对的 – Learner

回答

1

您不绑定到文档,而是绑定到dominoDocument对象中的属性。 dominoDocument对象是数据库中底层文档的Java包装器,因为该文档是可读写的,所以也将所有字段公开为读写,允许可编辑组件绑定到它们。如果编辑框绑定到只读属性,我怀疑它不会显示为可编辑。

的dominoView对象是Java包装为底层视图,并返回NotesXspViewEntry对象的集合即在视图中的每一行。这些不是可读写的(Notes Client可编辑列不会编辑视图条目,它们提供了一个可编辑区域,通过后端代码写入底层文档)。您需要考虑绑定到“视图中与查看条目相对应的文档”。

视图面板列可以包含组件,而不仅仅是映射到列值。视图面板是一个重复控制,其布局和设置有限,所以它的方法相同。在ViewPanel上设置var属性 - 这是一个获取当前NotesXspViewEntry句柄的变量。如果我没有记错,您不能拖放到列中,您需要将组件的代码粘贴到相关位置。

如果你想要编辑的,你需要一个dominoDocument数据源。或者,重现Notes Client可编辑视图列方法的方法,绑定到临时变量(例如requestScope属性),并在完成该过程时更新后端文档。另一种方法是启动对话框,传递当前行的UNID并进行编辑。另一种方法是使用XPages扩展库中的就地表单。

下面是IBM 2013连接在那里我做类似的,使一列可编辑http://www.intec.co.uk/session-slides-and-sample-database-from-ibm-connect/东西介绍和演示。

更现代的视图组件,如数据视图使它更容易。

相关问题