从DB2分类数据

时间:2013-09-24 16:01:26

标签: jdbc db2 xpages xpages-extlib

我使用jdbcQuery作为扩展库数据视图控件的数据源来提取DB2数据,当我在categoryColumn和/或summaryColumn columnName或value属性中使用DB2列名时页面引发错误500,但不是中extraColumns。我可以理解为什么categoryColumn可能会出现这种情况,因为DB2列没有被分类,但是我们认为DB2列被认为是摘要列。无论如何,是否有我可以使用的另一个控件或一些hack方法,当数据源中的列不是时,列会显示为分类?

Domino 8.5.3FP3 扩展库9.0.0.v00_02_20130515-2200 DB2 V10.1 for z / OS

2 个答案:

答案 0 :(得分:1)

我认为Category Bean项目可能有所帮助。至少你可以根据它制作自己的bean。

答案 1 :(得分:0)

第一个重复应包含列标题,图像用于标识categoization,计算类别值和第二个重复。第二次重复的数据源是进行新的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>