2017-03-01 60 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/東西介紹和演示。

更現代的視圖組件,如數據視圖使它更容易。

相關問題