XPages - xp:fileDownload Control в xp:repeat Control

У вас есть идеи, как я могу использовать элемент управления xp:fileDownload в элементе управления xp:repeat?

Я привязал элемент управления xp:repeat к просмотру. Так что я могу получить NotesViewEntry для каждой строки.

Но я не получил вложения, используя переменную var в элементе управления xp:fileDownload.

Я поместил xp:repeat в xp:panel и создал документ данных в объекте панели. Я поместил элемент управления загрузкой файлов внутрь этой панели. И привязал источник данных документа к файлу Download.

Не работал!

Есть идея ?

У меня есть 10 документов, и к каждому документу есть еще одно вложение. Я хочу показать эти файлы с помощью элемента управления загрузкой файлов.

<xp:this.data>
<xp:dominoView var="viewReviews" viewName="vwLookupGoruslerHepsi"></xp:dominoView>
</xp:this.data>

<xp:repeat id="repeat1" value="#{viewReviews}" var="viewEntry">
<xp:table style="width:100%;border:1px solid #ddd;margin-bottom:5px;"
    cellpadding="2">
    <xp:tr valign="top">
        <xp:td rowspan="5" style="width:250px">
            <xp:text id="computedField9" tagName="h4" escape="true">
                <xp:this.value><![CDATA[#{viewEntry["GorusBildirecek_CN"]}]]></xp:this.value>
            </xp:text>
        </xp:td>
    </xp:tr>
    <xp:tr valign="top">
        <xp:td>
            <xp:panel id="panelGorusEkler">
                <xp:this.data>
                    <xp:dominoDocument var="docGorus" formName="frmGorus"
                        action="openDocument" documentId="#{javascript:viewEntry.getNoteID()}">
                    </xp:dominoDocument>
                </xp:this.data>
                <xp:text escape="true" id="computedField1"
                    value="#{docGorus.GorusBildiren_OU1_NAME}">
                </xp:text>
                <xp:fileDownload rows="30" id="fileDownload3"
                    var="rowFile" indexVar="rowIndex" value="#{docGorus.Ekler}">
                </xp:fileDownload>
            </xp:panel>
        </xp:td>
    </xp:tr>
</xp:table>
</xp:repeat>

Спасибо

Файл альтернативного решенияСсылки для скачивания в xp:repeat Control

Альтернативный способ решить эту потребность.

Я добавил столбец, содержащий значения @AttachmentNames. (Имя столбца: $Эклер)

<xp:tr valign="top">
<xp:this.rendered><![CDATA[#{!empty viewEntry["$Ekler"]}]]></xp:this.rendered>
<xp:td>
    <xp:repeat id="repeat2" value="#{viewEntry.$Ekler}" var="embeddedFile">
        <xp:link escape="true" id="link1" style="margin-right:10px">
            <xp:this.text><![CDATA[#{javascript:var aSizes:Array = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
            var embedFile:NotesEmbeddedObject = viewEntry.getDocument().getAttachment(embeddedFile);
            var calcnr:Number = Math.floor(Math.log(embedFile.getFileSize())/Math.log(1024));
            var fSize = (embedFile.getFileSize()/Math.pow(1024, Math.floor(calcnr))).toFixed(2)+" "+ aSizes[calcnr];
            return embedFile.getName() + " (" + fSize + ")"}]]></xp:this.text>
            <xp:this.value><![CDATA[#{javascript:"/" + facesContext.getExternalContext().getRequestContextPath() + "/xsp/.ibmmodres/domino/OpenAttachment/" + facesContext.getExternalContext().getRequestContextPath() + "/" + viewEntry.getDocument().getUniversalID() + "/Ekler/" + embeddedFile;}]]></xp:this.value>
        </xp:link>
    </xp:repeat>
</xp:td>


person BestCoder.NET    schedule 01.11.2012    source источник
comment
Является ли Ekler полем RichText? Есть ли вложения там?   -  person stwissel    schedule 01.11.2012
comment
Вы можете создать свои ссылки вручную: wissel.net/blog/d6plinks/SHWL-86QKNM (но вам нужно будет позаботиться о значках самостоятельно: stackoverflow.com/questions/1298518/   -  person stwissel    schedule 01.11.2012
comment
Возможно, ваши вложения не хранятся в элементе форматированного текста   -  person Thomas Adrian    schedule 02.11.2012
comment
@Виссел; Я уверен, что Ekler - это элемент Rich-Text :), и у него есть два вложения. Я создал пользовательский список файлов с использованием методов html и выглядит так. (файл не используется) -› bestcoder.net/wp-content /uploads/2012/11/Ekler.png Кстати, если я смогу использовать fileDownload, это будет проще всего. Вложения находятся в элементе RichText. Изображения (bestcoder.net/wp-content/uploads/2012/ 11/Ekler2.png -- bestcoder.net /wp-content/uploads/2012/11/Ekler3.png)   -  person BestCoder.NET    schedule 02.11.2012


Ответы (1)


Если вы используете источник данных dominoDocument, я уверен, что вам нужно установить ignoreRequestParam="true" при передаче documentId. В противном случае он обращается к параметру строки запроса. Тогда загрузка файла должна работать.

Для второго варианта настроен ли столбец для отображения нескольких значений в виде отдельных записей? Если повтор получает строковое значение с разделителями-запятыми, он не будет работать: повторы ожидают коллекции, а не отдельной строки. Убедитесь, что свойство columnValues() объекта NotesViewEntry является многозначным. Даже тогда я ожидаю, что он потерпит неудачу, если будет только одно вложение.

Вместо использования значения столбца передайте повтор коллекции NotesEmbeddedObject, полученной непосредственно из viewEntry.getDocument(). Каждый элемент в вашем повторе будет NotesEmbeddedObject.

person Paul Stephen Withers    schedule 02.11.2012
comment
Параметр ignoreRequestParam=true решает проблему контроля загрузки файлов. просто, но идеально :) Спасибо, Пол. - person BestCoder.NET; 03.11.2012