2017-03-01 15 views
0

このpostから、Simon Delicataの回答とコメントに感謝します。選択したドキュメントをビューから取得して保存し、別のドキュメントとして保存できます。ビューにデータをバインドすることはできますか?

私はこのアプローチについて質問があります。ドキュメントを編集すると、編集ページにリダイレクトされるリンクをクリックすると、編集ページは以前の投稿のデザインと似ています。上のコンボボックス、チェックボックス付きのビュー(このビューは選択に使用されます)、ビューとコンボボックスから選択値を保存するためのボタン。保存された値を表示する別のビューもあります。

ここでコードとそれは別々の文書として保存することができますが、保存された値を表示したり、チェックボックスに "ティック"記号を入れることはできません。

<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を使用しているとします。ドキュメントのオープンモードは編集で、特定の値をクリックすると、「Editページ」を開きます。そして、「Editページ」で、あなたはビューのチェックボックスにチェックをデフォルト値(メインページで選択した値)がある意味ですか? – beginner

+0

@beginnerはい、あなたは正しいです – Learner

答えて

1

ドキュメントにバインドするのではなく、dominoDocumentオブジェクトのプロパティにバインドしています。 dominoDocumentオブジェクトは、データベース内の基礎となる文書のJavaラッパーです。文書が読み書き可能であるため、すべてのフィールドが読み書き可能であるため、編集可能なコンポーネントがバインドされます。エディットボックスが読み込み専用のプロパティにバインドされていた場合、編集可能とは思われません。

dominoViewオブジェクトは、基になるビューのJavaラッパーであり、NotesXspViewEntryオブジェクトのコレクション、つまりビューの各行を返します。これらは読み書きできません(Notes Clientの編集可能な列はビュー・エントリーを編集しません。バックエンド・コードを介して基礎となる文書に書き込む編集可能な領域を与えます)。ビューのビューエントリに対応するドキュメントへのバインディングについて考える必要があります。

ビューパネルの列には、列値にマッピングするのではなく、コンポーネントを含めることができます。ビューパネルはレイアウトと設定が制限されたリピートコントロールなので、同じアプローチです。 ViewPanelのvarプロパティを設定します。これは、現在のNotesXspViewEntryのハンドルを取得するための変数です。あなたはドラッグアンドドロップすることはできません私は正しく覚えている場合は、コンポーネントのコードを適切な場所に貼り付ける必要があります。

編集可能にするには、dominoDocumentデータソースが必要です。または、Notes Clientの編集可能なビュー列アプローチのアプローチを再現し、一時変数(たとえばrequestScopeプロパティ)にバインドし、プロセスの完了時にバックエンド文書を更新します。別のアプローチは、ダイアログを起動し、現在の行のUNIDを渡し、編集することです。さらに別のアプローチは、XPages Extension LibraryのIn Placeフォームを使用することです。

ここでは、IBM Connect 2013のプレゼンテーションとデモがあります。ここでは、編集可能な列をhttp://www.intec.co.uk/session-slides-and-sample-database-from-ibm-connect/と同様に作成しています。

データビューのような最新のビューコンポーネントを使用すると、より簡単になります。

関連する問題