Xpages Dynamic Dojo диалоговое управление

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

Аналогичный пример без xpages можно увидеть здесь: http://www.replacementkeys.co.uk/window?dir=asc&limit=12&mode=grid&order=position — где вы наводите курсор на изображение, и появляется кнопка быстрого просмотра, которая затем динамически загружает контент для этого продукта.

Любые идеи будут действительно оценены.


person pipalia    schedule 13.03.2012    source источник


Ответы (2)


Мы строим диалог вне элемента управления повтором, а затем действие, которое запускает или показывает его, также устанавливает переменную viewScope, которая используется UNID для источника данных в диалоге. Просто убедитесь, что вы обновляете содержимое диалогового окна при его открытии...

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.data>
    <xp:dominoView var="promptView" viewName="dlgBoxes">
    </xp:dominoView>
</xp:this.data>
<xp:panel>
    <xp:repeat id="repeat1" rows="30" value="#{promptView}" var="promptEntry">
        <xp:panel tagName="div">
            <xp:text escape="true" id="computedField1" value="#{promptEntry.dlgName}">
            </xp:text>
            &#160;
            <xp:button value="details" id="button1">
                <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                    <xp:this.action><![CDATA[#{javascript:
                        var pe:NotesViewEntry = promptEntry;
                        viewScope.put("dlgDocUnid", pe.getUniversalID());
                        getComponent("dialog1").show();
                    }]]></xp:this.action>
                </xp:eventHandler>
            </xp:button>
        </xp:panel>
    </xp:repeat>
</xp:panel>

<xe:dialog id="dialog1" keepComponents="false" partialRefresh="true">
    <xe:this.title><![CDATA[#{javascript:
        var unid = viewScope.get("dlgDocUnid");
        if(!unid) return "";
        var doc:NotesDocument = database.getDocumentByUNID(unid);
    return doc.getItemValueString("dlgName");}]]></xe:this.title>
    <xp:panel>
        <xp:this.data>
            <xp:dominoDocument var="dlgDoc" formName="dlgBox" action="openDocument">
                <xp:this.documentId><![CDATA[#{javascript:viewScope.get("dlgDocUnid");}]]></xp:this.documentId>
            </xp:dominoDocument>
        </xp:this.data>
        <xp:text escape="true" id="computedField2" value="#{dlgDoc.Title}">
        </xp:text>
        <xp:br></xp:br>
        <xp:br></xp:br>
        <xp:text escape="true" id="computedField3" value="#{dlgDoc.dlg}">
        </xp:text>
    </xp:panel>
</xe:dialog>
</xp:view>

Удачного кодирования

/Новички

person Newbs    schedule 13.03.2012
comment
Мне просто нужно было изменить обновление кнопки на частичное обновление, и это сработало! Спасибо Вам большое. Интересно, как вы сделали this.data на панели — я решил использовать dataContexts для определения своего документа. - person pipalia; 14.03.2012
comment
Я немного изменил код, добавив для кнопки следующее: viewScope.dlgTitle = test; а затем в заголовке диалогового окна - я использовал return viewScope.dlgTitle - он был установлен как javascript SS, вычисляемый динамически - но он не устанавливает заголовок ??? какая-то причина, по которой он не будет вычислять заголовок? - person pipalia; 14.03.2012
comment
@Newbs Я заметил этот ответ, даже если он был создан 2 года назад. Не могли бы вы помочь мне с этим вопросом: заголовок stackoverflow.com/questions/24423030/? Большое спасибо! - person Florin M.; 07.07.2014

Вы можете комбинировать элемент управления повторением с элементом управления диалоговым окном библиотеки расширений, чтобы иметь возможность запускать диалоговое окно, когда пользователь щелкает отдельную строку. Крис Тухи написал прекрасную статью под названием Всплывающие диалоговые формы из представлений в XPages, в которой это демонстрируется.

person Per Henrik Lausten    schedule 13.03.2012
comment
Жаль, что ссылка уже не актуальна ;( - person Florin M.; 07.07.2014