I am opening a dialog box in an Xpage. In the dialog box I am displaying some fields from 3 other documents, and allowing the user to save some notes. All of this works, except I want to display attachments if there are any. I entered a file download control and for the data source pointed to the target document and did a
tmpDoc.getAttachment("attachments")
to get the attachments. But nothing shows up.
Here is the code from the one row in the table in the dialog box.
The other fields work fine, and I know I am getting the tmpDoc, but how do I display the attachment so the user can view it?
<xp:td>
    <xp:fileDownload
        rows="30"
        id="fileDownload1"
        displayLastModified="false">
        <xp:this.value><![CDATA[#{javascript:
            var prtUNID:String = document.getItemValueString("PCTaskParentID");
            var tmpView:NotesView = database.getView("(dbAllPCTasksByTaskID)");
            var tmpDoc:NotesDocument = tmpView.getDocumentByKey(prtUNID);
            tmpDoc.getAttachment("attachments")
        }]]></xp:this.value>
    </xp:fileDownload>
</xp:td>
I am having more issues with this. Now it does not really work at all.
Here is what I am trying to accomplish.
I have a form PC Build. It is all the tasks that must be done to build a PC in my company. There is a list of Master Tasks called PC Tasks. When a new PC Build is saved, the PC Tasks get copied to rspPCTask forms attached to the PC Build.
As a user works om building a computer they can open up the PC Build and see the individual tasks. I want them to be able to click on a task and pull up the notes and attachments from the master task, while entering notes for the individual task.
Below is a screen shot. In the second field I am grabbing something with javascript. In the first field I am binding the field to the data source, but it is always blank. I cannot figure out why.
  
I have put in all my code below. Any assistance would be greatly appreciated!!!
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex"
    xmlns:xc="http://www.ibm.com/xsp/custom"
    dojoForm="true"
    dojoParseOnLoad="true"
    dojoTheme="true">
    <xp:this.data>
        <xp:dominoDocument
            var="document1"
            action="openDocument"
            computeWithForm="onsave"
            formName="PCBuild">
            <xp:this.postNewDocument>
                <xp:actionGroup>
                    <xp:setValue
                        binding="#{document1.ID}"
                        value="#{javascript:session.evaluate('@Unique')}" />
                    <xp:setValue
                        binding="#{document1.crtDte}"
                        value="#{javascript:session.evaluate('@Today')}" />
                    <xp:setValue
                        binding="#{document1.crtUsr}"
                        value="#{javascript:session.getCommonUserName()}" />
                </xp:actionGroup>
            </xp:this.postNewDocument>
        </xp:dominoDocument>
    </xp:this.data>
    <xp:this.resources>
        <xp:styleSheet
            href="/custom.css" />
        <xp:script
            src="/xpValidationPCBuild.jss"
            clientSide="false" />
        <xp:script
            src="/xpUtilities.jss"
            clientSide="false"></xp:script>
        <xp:styleSheet
            href="/.ibmxspres/dojoroot/dojox/grid/resources/tundraGrid.css">
        </xp:styleSheet>
        <xp:styleSheet
            href="/.ibmxspres/dojoroot/dojox/grid/resources/tundraEnhancedGrid.css">
        </xp:styleSheet>
        <xp:dojoModule
            name="dojox.grid.EnhancedGrid"></xp:dojoModule>
    </xp:this.resources>
    <xp:this.beforePageLoad><![CDATA[#{javascript:viewScope.ID = document1.getItemValueString("ID")}]]></xp:this.beforePageLoad>
    <xp:this.afterPageLoad><![CDATA[#{javascript:viewScope.put("rows","25")}]]></xp:this.afterPageLoad>
    <xp:panel
        style="width:900.00px">
        <xp:panel>
            <xp:text
                escape="true"
                id="dspDocUNID"
                style="display:none">
                <xp:this.value><![CDATA[#{javascript:if (@IsNewDoc()) 
{
return "0"
}
else
{
var doc:NotesDocument = document1.getDocument();
var sUNID = doc.getUniversalID();
return sUNID
}}]]></xp:this.value>
            </xp:text>
            <xp:scriptBlock
                id="scriptBlock1">
                <xp:this.value><![CDATA[// Conditionally return an image tag to display an icon in a cell
function displayIcon (value) {
  var image = '';
 switch (value.toLowerCase()) {
    case "open":
      image = '<img alt="" src="blueUncheckedCheckBox15.png" />';
      break;
     case "closed":
      image = '<img alt="" src="blueCheckedCheckBox15.png" />';
      break;
    default:
      image = '<img alt="" src="greenChk50.png" />';
      break;
  }
  return image;
}]]></xp:this.value>
            </xp:scriptBlock>
        </xp:panel>
        <xe:widgetContainer
            id="widgetContainerHeader">
            <xp:panel
                style="padding-top:8.0px;padding-bottom:8.0px">
                <xp:button
                    id="button1"
                    value="Edit"
                    style="font-weight:bold;font-size:10pt"
                    rendered="#{javascript:!(document1.isEditable())}">
                    <xp:eventHandler
                        event="onclick"
                        submit="true"
                        refreshMode="complete">
                        <xp:this.action>
                            <xp:changeDocumentMode
                                mode="edit" />
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
                <xp:button
                    value="Save"
                    id="button3"
                    style="font-weight:bold;font-size:10pt"
                    rendered="#{javascript:(document1.isEditable())}">
                    <xp:eventHandler
                        event="onclick"
                        submit="true"
                        refreshMode="partial"
                        refreshId="plContainer">
                        <xp:this.action>
                            <xp:actionGroup
                                condition="#{javascript:validateForm()}">
                                <xp:saveDocument
                                    var="document1"></xp:saveDocument>
                                <xp:executeScript>
                                    <xp:this.script><![CDATA[#{javascript://Get handle on current doc and see if it is a new doc
var thisDoc:NotesDocument = document1.getDocument();
var tg = thisDoc.getItemValueString("tasksGenerated");
if (tg != "Y") {
//Set flag to Y and save document
thisDoc.replaceItemValue("tasksGenerated","Y")
thisDoc.save(true)
var rspDoc:NotesDocument;
//Loop through all PC Task Docs
var pcTasksView:NotesView = database.getView("(dbAllPCTasks)");
var pcTaskDoc:NotesDocument = pcTasksView.getFirstDocument();
var tmpDoc:NotesDocument;
while (pcTaskDoc != null)
{
//Make new doc and add as response to this doc
rspDoc = database.createDocument();
rspDoc.replaceItemValue("Form","rspPCTask");
rspDoc.replaceItemValue("category",pcTaskDoc.getItemValueString("category"));
rspDoc.replaceItemValue("title",pcTaskDoc.getItemValueString("title"));
rspDoc.replaceItemValue("status","Open");
rspDoc.replaceItemValue("PCBuildParentID",thisDoc.getItemValueString("ID"));
rspDoc.replaceItemValue("PCTaskParentID",pcTaskDoc.getItemValueString("ID"));
rspDoc.replaceItemValue("PCTaskParentUNID",pcTaskDoc.getUniversalID());
rspDoc.replaceItemValue("order",pcTaskDoc.getItemValueInteger("order"));
rspDoc.save();
tmpDoc = pcTasksView.getNextDocument(pcTaskDoc);
pcTaskDoc.recycle();
pcTaskDoc = tmpDoc;
}
}}]]></xp:this.script>
                                </xp:executeScript>
                                <xp:openPage
                                    name="$$PreviousPage"></xp:openPage>
                            </xp:actionGroup>
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
                <xp:button
                    id="button2"
                    style="font-weight:bold;font-size:10pt"
                    value="Close">
                    <xp:eventHandler
                        event="onclick"
                        submit="true"
                        refreshMode="norefresh">
                        <xp:this.action>
                            <xp:openPage
                                name="$$PreviousPage"
                                target="openDocument" />
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
                <xp:text
                    escape="true"
                    id="computedField3"
                    style="font-size:14pt;color:rgb(79,79,79);padding-left:px;padding-bottom:px;margin-bottom:px;padding-right:25.0px">
                    <xp:this.value><![CDATA[#{javascript:document1.getItemValueString("crtDte")}]]></xp:this.value>
                </xp:text>
            </xp:panel>
        </xe:widgetContainer>
        <xp:panel
            id="plContainer">
            <xp:panel>
                <xe:widgetContainer
                    id="widgetContainerData">
                    <xe:formTable
                        id="frLocationMaster"
                        disableErrorSummary="true"
                        disableRowError="true">
                        <xp:this.facets>
                        </xp:this.facets>
                        <xe:formRow
                            id="formRow5"
                            labelPosition="none"
                            style="padding-bottom:10.0px">
                            <xp:table
                                style="width:99%"
                                border="0"
                                cellpadding="0"
                                role="presentation"
                                cellspacing="0"
                                id="table4">
                                <xp:tr>
                                    <xp:td
                                        style="width:80.0px;min-width:120px">
                                        <xp:text
                                            id="cfTitle"
                                            xp:key="header"
                                            style="font-size:14pt;color:rgb(79,79,79);padding-left:px;padding-bottom:px;margin-bottom:px">
                                            <xp:this.value><![CDATA[#{javascript:"PC Build"}]]></xp:this.value>
                                        </xp:text>
                                    </xp:td>
                                    <xp:td
                                        style="width:250.0px">
                                    </xp:td>
                                    <xp:td
                                        style="text-align:right">
                                        <xp:text
                                            escape="true"
                                            id="computedField1"
                                            style="font-size:14pt;color:rgb(79,79,79);padding-left:25.0px;padding-bottom:px;margin-bottom:px">
                                            <xp:this.value><![CDATA[#{javascript:document1.getItemValueString("crtUsr") + " on "}]]></xp:this.value>
                                            <xp:this.rendered><![CDATA[#{javascript:if (@IsNewDoc() == 1) {
return false
} else {
return true;
}}]]></xp:this.rendered>
                                        </xp:text>
                                        <xp:text
                                            escape="true"
                                            id="computedField2"
                                            style="font-size:14pt;color:rgb(79,79,79);padding-left:px;padding-bottom:px;margin-bottom:px;padding-right:px"
                                            value="#{document1.CrtDte}">
                                            <xp:this.converter>
                                                <xp:convertDateTime
                                                    type="both"
                                                    timeStyle="short" />
                                            </xp:this.converter>
                                            <xp:this.rendered><![CDATA[#{javascript:if (@IsNewDoc() == 1) {
return false
} else {
return true;
}}]]></xp:this.rendered>
                                        </xp:text>
                                    </xp:td>
                                </xp:tr>
                            </xp:table>
                        </xe:formRow>
                        <xe:formRow
                            id="formRow1"
                            labelPosition="none">
                            <xp:table
                                style="width:99%"
                                border="0"
                                cellpadding="0"
                                role="presentation"
                                cellspacing="0"
                                id="table3">
                                <xp:tr>
                                    <xp:td
                                        style="width:10%;min-width:120px;">
                                        <xp:label
                                            id="label4"
                                            for="formRow1"
                                            value="Employee Name" />
                                    </xp:td>
                                    <xp:td
                                        style="width:100px">
                                        <xp:inputText
                                            value="#{document1.employeeName}"
                                            id="employeeName1">
                                            <xp:typeAhead
                                                mode="full"
                                                minChars="1"
                                                valueListSeparator=","
                                                ignoreCase="true"
                                                id="typeAhead1">
                                                <xp:this.valueList><![CDATA[#{javascript:var dbname = new Array(@Subset(@DbName(), 1),"names.nsf");
return @DbColumn(dbname,"($PeopleByName)",1);}]]></xp:this.valueList>
                                            </xp:typeAhead>
                                        </xp:inputText>
                                    </xp:td>
                                    <xp:td
                                        style="width:20px">
                                        <xe:valuePicker
                                            id="valuePicker1"
                                            for="employeeName1"
                                            pickerIcon="/picker.png"
                                            dialogTitle="Choose Employee">
                                            <xe:this.dataProvider>
                                                <xe:simpleValuePicker>
                                                    <xe:this.valueList><![CDATA[#{javascript:var db:NotesDatabase = session.getDatabase(database.getServer(),"names.nsf");
var viewHandle:NotesView = db.getView("($PeopleByName)");
return viewHandle.getColumnValues(0)
}]]></xe:this.valueList>
                                                </xe:simpleValuePicker>
                                            </xe:this.dataProvider>
                                        </xe:valuePicker>
                                    </xp:td>
                                    <xp:td>
                                        <xp:message
                                            id="message1"
                                            for="employeeName1" />
                                    </xp:td>
                                </xp:tr>
                            </xp:table>
                        </xe:formRow>
                        <xe:formRow
                            id="formRow2"
                            labelPosition="none">
                            <xp:table
                                style="width:99%"
                                border="0"
                                cellpadding="0"
                                role="presentation"
                                cellspacing="0"
                                id="table1">
                                <xp:tr>
                                    <xp:td
                                        style="width:10%;min-width:120px;">
                                        <xp:label
                                            id="label1"
                                            for="formRow1"
                                            value="Computer Name" />
                                    </xp:td>
                                    <xp:td
                                        style="width:100px">
                                        <xp:inputText
                                            value="#{document1.computerName}"
                                            id="computerName1">
                                        </xp:inputText>
                                    </xp:td>
                                    <xp:td
                                        style="width:20px">
                                    </xp:td>
                                    <xp:td>
                                        <xp:message
                                            id="message2"
                                            for="computerName1" />
                                    </xp:td>
                                </xp:tr>
                            </xp:table>
                        </xe:formRow>
                        <xe:formRow
                            id="formRow3"
                            labelPosition="none"
                            rendered="false">
                        </xe:formRow>
                        <xe:formRow
                            id="formRow4"
                            labelPosition="none"
                            rendered="false">
                        </xe:formRow>
                    </xe:formTable>
                </xe:widgetContainer>
            </xp:panel>
        </xp:panel>
        <xp:panel>
            <xe:widgetContainer
                id="widgetContainer1">
                <xp:panel>
                    <xp:viewPanel
                        rows="30"
                        id="viewPanel1"
                        var="thisEntry">
                        <xp:this.facets>
                            <xp:pager
                                partialRefresh="true"
                                layout="Previous Group Next"
                                xp:key="headerPager"
                                id="pager1">
                            </xp:pager>
                        </xp:this.facets>
                        <xp:this.data>
                            <xp:dominoView
                                var="view1"
                                viewName="(dbAllRpPCTasks)">
                                <xp:this.keys><![CDATA[#{javascript:document1.getItemValueString("ID")}]]></xp:this.keys>
                            </xp:dominoView>
                        </xp:this.data>
                        <xp:viewColumn
                            columnName="title"
                            id="viewColumn5"
                            displayAs="link">
                            <xp:viewColumnHeader
                                value="Title"
                                id="viewColumnHeader5">
                            </xp:viewColumnHeader>
                            <xp:eventHandler
                                event="onclick"
                                submit="false"
                                refreshMode="partial"
                                refreshId="panelDig">
                                <xp:this.action><![CDATA[#{javascript:viewScope.UNID = thisEntry.getDocument().getUniversalID();
viewScope.parUNID = thisEntry.getDocument().getItemValueString("PCTaskParentUNID");
getComponent('dialog1').show()}]]></xp:this.action>
                            </xp:eventHandler>
                        </xp:viewColumn>
                    </xp:viewPanel>
                    <xp:panel
                        id="panelDig">
                        <xp:this.data>
                            <xp:dominoDocument
                                var="document2"
                                formName="PCTask"
                                action="editDocument"
                                documentId="#{javascript:viewScope.parUNID}">
                            </xp:dominoDocument>
                            <xp:dominoDocument
                                var="document3"
                                formName="rspPCTask"
                                action="editDocument"
                                documentId="#{javascript:viewScope.parUNID}">
                            </xp:dominoDocument>
                        </xp:this.data>
                        <xe:dialog
                            id="dialog1"
                            style="width:700px;height:600px"
                            refreshOnShow="true">
                            <xp:table>
                                <xp:tr>
                                    <xp:td>
                                        <xp:label
                                            value="Master Title"
                                            id="label2" />
                                    </xp:td>
                                    <xp:td>
                                        <xp:text
                                            escape="true"
                                            id="computedField4"
                                            value="#{document2.title}">
                                        </xp:text>
                                    </xp:td>
                                </xp:tr>
                                <xp:tr>
                                    <xp:td>
                                        <xp:label
                                            value="Master Task Notes"
                                            id="label3" />
                                    </xp:td>
                                    <xp:td>
                                        <xp:text
                                            escape="true"
                                            id="computedField5">
                                            <xp:this.value><![CDATA[#{javascript:var tmpDoc:NotesDocument = database.getDocumentByUNID(viewScope.parUNID)
tmpDoc.getItemValueString("notes")}]]></xp:this.value>
                                        </xp:text>
                                    </xp:td>
                                </xp:tr>
                                <xp:tr>
                                    <xp:td>
                                        <xp:label
                                            value="Master Attachments"
                                            id="label5" />
                                    </xp:td>
                                    <xp:td></xp:td>
                                </xp:tr>
                                <xp:tr>
                                    <xp:td></xp:td>
                                    <xp:td></xp:td>
                                </xp:tr>
                                <xp:tr>
                                    <xp:td>
                                        <xp:label
                                            id="label7"
                                            value="Notes" />
                                    </xp:td>
                                    <xp:td>
                                        <xp:inputTextarea
                                            id="inputTextarea1"
                                            style="width:98.0%;height:100px"
                                            value="#{document3.notes}">
                                        </xp:inputTextarea>
                                    </xp:td>
                                </xp:tr>
                            </xp:table>
                        </xe:dialog>
                    </xp:panel>
                </xp:panel>
            </xe:widgetContainer>
        </xp:panel>
    </xp:panel>
    <xp:eventHandler
        event="onClientLoad"
        submit="true"
        refreshMode="norefresh">
        <xp:this.script><![CDATA[try {
 dojo.byId("#{id:employeeName1}").focus();
} catch (e) { }]]></xp:this.script>
    </xp:eventHandler>
</xp:view>
				
                        
To show all rich text field's attachments of "another" document in a fileDowndload control:
set attribute
documentIdto "another" document's UNIDvalueto document's rich text field(in your case the rich text field is called "attachments")
BTW
tmpDoc.getAttachment("attachments")you used doesn't return all attachments of rich text field "attachments" but would look for an attachment with the file name "attachments" somewhere in document.