2013-09-24 2 views
1

Я использую jdbcQuery в качестве источника данных для элемента управления представлением данных библиотеки расширений, чтобы вытащить данные DB2, а страница выдает ошибку 500, когда я использую имена столбцов DB2 в категории Column и/или summaryColumn columnName или значения свойства , но не extraColumns. Я могу понять, почему это может произойти для categoryColumn, потому что столбец DB2 не классифицирован, но подумал бы, что столбцы DB2 считаются сводными столбцами. Во всяком случае, есть ли другой контроль, который я могу использовать, или какой-нибудь метод взлома, чтобы столбцы отображались в категориях, если столбца из источника данных нет?Категоризация данных из DB2

Domino 8.5.3FP3 Библиотека Расширение 9.0.0.v00_02_20130515-2200 V10.1 DB2 для г/OS

+0

Быстрый ответ: повторяют элементы управления + секции ... –

+0

@TimTripcony Можете ли вы предоставить фрагмент кода, потому что я понимаю, повторы некоторые, но никогда не использовали раздел. Я сделал два удара, используя фрагменты кода, добавленные в виде отдельных комментариев. Первый из них близок к тому, что мне нужно, но заголовок секции имеет каждое значение столбца, а не только уникальное значение. –

+0

Отрывок # 1 '<хр: повторить ID = "Repeat1" строка = "30" переменных = "collRowData" значения = "# {jdbcQuery1}"> <хр: раздел ID = "раздел1" initClosed = "false"> <хр: таблица стиль = "ширина: 100,0%; левое поле: 30px;"> <хр: текст побег = "истинный" ID = "computedField2" значение = "# {collRowData.MBR_FIRST_NM}">

ответ

0

Первое повторение должно содержать заголовки столбцов, изображения для идентификации категоризации, вычисленного значения категории и второго повтора. Источник данных для второго повтора делает новый вызов SQL, чтобы вытащить ваши конкретные поля, основываясь на категоризированном значении от первого повтора. Значения полей объединяются вместе, так что они могут быть проанализированы для каждого из моих вычисленных полей. Мой blog будет показывать больше деталей со скриншотами. Снимок экрана показывает категориальные значения в моем XPage, которые объясняются образцом кода. enter image description here

<xp:panel xp:key="facetMiddle"> 
<xp:table> 
    <xp:tr> 
    <xp:td></xp:td> 
    </xp:tr> 
    <xp:repeat 
    var="collRowData" 
    value="#{jdbcQuery1}"> //name of XPage datasource 
    <xp:tr> 
    <xp:td> 
    <xp:panel id="mainpanel"> 
     <xp:image 
     id="image1" 
     style="height:16.0px;width:16.0px" 
     rendered="#{jav`enter code here`ascript: 
     context.getSubmittedValue()=='hide' || 
     context.getSubmittedValue()== null;}"> 
     <xp:this.url><![CDATA[#{javascript:"/.ibmxspres/domino/icons/vwicn096.gif"}]]></xp:this.url> 
     <xp:eventHandler 
      event="onclick" 
      submit="false"> 
      <xp:this.script><![CDATA[var visibility = 'show'; 
      XSP.partialRefreshGet("#{id:mainpanel}", { 
      params: {'$$xspsubmitvalue': visibility}, 
      onComplete: function() { 
      XSP.partialRefreshGet("#{id:secondpanel}", { 
      params: {'$$xspsubmitvalue': visibility}});}});]]></xp:this.script> 
     </xp:eventHandler> 
     </xp:image> 
     <xp:image 
     id="image2" 
     style="height:16.0px;width:16.0px" 
     rendered="#{javascript:context.getSubmittedValue()=='show'}"> 
     <xp:this.url><![CDATA[#{javascript:"/.ibmxspres/domino/icons/vwicn097.gif"}]]></xp:this.url> 
     <xp:eventHandler 
      event="onclick" 
      submit="false"> 
      <xp:this.script><![CDATA[var visibility = 'hide'; 
      XSP.partialRefreshGet("#{id:mainpanel}", { 
      params: {'$$xspsubmitvalue': visibility}, 
      onComplete: function() { 
      XSP.partialRefreshGet("#{id:secondpanel}", { 
      params: {'$$xspsubmitvalue': visibility}});}});]]></xp:this.script> 
     </xp:eventHandler> 
     </xp:image> 
     <xp:text 
     escape="true" 
     id="computedField2" 
     style="margin-left:5.0px;font-weight:bold"> 
     <xp:this.value><![CDATA[#{javascript:if (collRowData[0]) { 
      collRowData[0] } 
     else { 
      '- not categorized -'}}]]> 
     </xp:this.value> 
     </xp:text> 
    </xp:panel> 
    <xp:panel id="secondpanel"> 
     <xp:repeat 
     var="character" 
     rendered="#{javascript:context.getSubmittedValue()== 'show'}"> 
     <xp:this.value> 
     <![CDATA[#{javascript: 
     var sql = "Select MBR_FIRST_NM, MBR_LAST_NM from TECH.TBSCRA_DEMO where MBR_ACCESS_NBR = '" + collRowData[0] + "'"; //single quote is before and after collRowData[0] 
     var rs = @JdbcExecuteQuery("db2",sql); 
     var fName; 
     var lName; 
     while(rs.next()) { 
     //Get the data from the row using the column name 
     fName = rs.getString("MBR_FIRST_NM"); 
     lName = rs.getString("MBR_LAST_NM"); 
     } 
     return fName + "," + lName}]]></xp:this.value> 
     <xp:table> 
     <xp:tr> 
     <xp:td> 
      <xp:text 
      escape="true" 
      id="firstname"> 
      <xp:this.value><![CDATA[#{javascript: 
      var nm = @Explode(character,","); 
      if (character) { 
      nm[0] } 
      else { 
      '- not categorized -'}}]]></xp:this.value> 
      </xp:text> 
     </xp:td> 
     </xp:tr> 
     </xp:table> 
     </xp:repeat> 
    </xp:panel> 
    </xp:td> 
    </xp:tr> 
    </xp:repeat> 
</xp:table> 
</xp:panel> 
1

Я думаю Category Bean проект может помочь. По крайней мере, вы можете создать свой собственный компонент на основе этого.

+0

Я проверил этот проекти не зная много о фасоли, не уверен, что это сработает. Я создал новую дискуссию с просьбой об этом и еще не получил ответа. Тем не менее, я, наконец, смог получить что-то на самом деле, где отображаются значения. Следующим заданием является сортировка по другим столбцам. –

+0

(Согласно этому вопросу в обсуждении проекта) Я уверен, что этот компонент НЕ будет работать с DB2 сразу. Я указал на это, потому что вы должны изучить его источники и изменить его, чтобы получать данные из JDBC вместо собственного представления Domino. Таким образом, вы должны написать свой собственный компонент, основываясь на его источниках. –

+0

Благодарим вас за добавленный комментарий. Бобы - это то, что мне еще предстоит погрузиться. –

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