2014-01-14 6 views
0

У меня есть несколько пользовательских элементов управления, размещенных на xpage. Я хочу, чтобы эти элементы управления, которые будут отображаться в порядке настройки в документе примечанияПоказать пользовательские элементы управления на веб-странице в другом порядке, чем в DDE - Xpages

Так что мой XPage может выглядеть в ОВО

CustomControl1
CustomControl2
CustomControl3
CustomControl4

, но когда на веб-странице пользовательский элемент управления должен быть отображен в следующем порядке (на основе установочного документа)

CustomControl4
CustomControl1
CustomControl2
CustomControl3

кого-нибудь есть идеи, как достичь этого (на стороне сервера)

ответ

3

Вы можете использовать xp:switchFacet в сочетании с xp:repeat вычислить порядок во время выполнения, как это:

<xp:repeat 
    id="repeat1" 
    rows="30" 
    var="rowEntry"> 
    <xp:this.value><![CDATA[#{javascript:var arr = ["Control1","Control3","Control2"];return arr;}]]></xp:this.value> 
    <xe:switchFacet 
     id="switchFacet1" 
     selectedFacet="#{javascript:rowEntry}"> 
     <xp:this.facets> 
      <xp:panel xp:key="Control1">Control1</xp:panel> 
      <xp:panel xp:key="Control2">Control2</xp:panel> 
      <xp:panel xp:key="Control3">Control3</xp:panel> 
     </xp:this.facets> 
    </xe:switchFacet> 
</xp:repeat> 

Вместо Array arr вы можете использовать данные, основанные на document или xsp.propertie. Выходом этого кода является Control1 Control3 Control2, и в вашем Дизайнере у вас есть свои элементы управления внутри switchFacet в следующем порядке: Control1 Control2 Control3.

+0

спасибо, действительно хороший ответ –

3

Не зная реальную боль вашего проекта я могу только предположить, что индивидуальная позиция должна быть определенный во время выполнения, или что-то в этом роде.

В целом: управление макетом страницы является чистой работой CSS. На полученной странице почти все можно разместить практически в любом месте диапазона страниц, и неважно, где она была размещена во время разработки. Итак, если вы вложите свои собственные элементы управления в свои собственные контейнеры (панели/div), тогда вы должны быть настроены. Вы можете определить классы позиционирования в CSS, а затем указать какой-либо код SSJS, какой класс назначен для какого div.

Если, например, у вас есть настраиваемый элемент управления для каждого дня недели, и вы всегда хотите, чтобы текущий день находился в самом верхнем положении, тогда вы можете определить 7 классов css, как в «.today», .todayPlus1 "," .todayPlus2 "..." .todayPlus6 ". Напишите свои правила позиционирования для каждого класса. И, наконец, вычислите свойство styleClass каждой панели в зависимости от текущего дня недели.

+0

спасибо, действительно хороший ответ –

 Смежные вопросы

  • Нет связанных вопросов^_^