`
baobeituping
  • 浏览: 1071511 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

通过不同的按钮来实现报表数据的不同的排序功能

阅读更多

所用技术通过在JSP页面按下不同的排序按钮,调用存储过程返回不同的参数,然后在XSL页面显示的时候通过返回的不同的参数调用不同的摸板来做.

 

存储过程:

 

if @SubmitButtonFlag='searchByTractMoney'
   begin
    select top 1 'searchByTractMoney' as Type from #temp1 table0  for xml auto
   end
  else if @SubmitButtonFlag='searchByViewCount'
   begin
    select top 1 'searchByViewCount' as Type from #temp1 table0  for xml auto
   end
  else if @SubmitButtonFlag='search'
   begin
    select top 1 'search' as Type from #temp1 table0  for xml auto
   end

 

XSL:

<?xml version="1.0" encoding="gbk" ?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xsl2="http://www.w3.org/TR/WD-xsl"
 xmlns:msxsl="urn:schemas-microsoft-com:xslt"
 xmlns:myxsl="http://www.jobcn.com"
 version="1.0">
 <xsl:output method="html" encoding="gbk"/>

 <xsl:decimal-format NaN="0"/><!-- NaN处理 -->
 
  
 
 
 <xsl:template match="/root">
  <xsl:variable name="numCount" select="count(/root/table1)"/>
  <html>
   <head>
    <title><xsl:value-of select="/root/table0/@XslTitle"/></title>
   </head>
   
   <body topmargin="0" leftmargin="0" oncontextmenu="return false;" ondragstart="return false;" onsource="return false;" onselectstart="return false;" >
    <center>
     <p class="reportstatisticdate"><xsl:value-of select="/root/table0/@ReportStatisticDate"/></p>
     
     <xsl:choose>
      <xsl:when test="$numCount =0">
       <br/><font color='red' size='3'>没有数据!</font><br/>
      </xsl:when>
      <xsl:otherwise>
       <table border='0' cellpadding='4' cellspacing='1' class="reporttable">
        <tr class="reporttabletitle">
         <td colspan="100"  nowrap='true'>
          <font color="red">【<xsl:value-of select="/root/table0/@ReportTableDate"/>】</font><xsl:value-of select="/root/table0/@ReportTableTitle"/>
         </td>
        </tr>
        <tr class="reporttablehead_b" nowrap="true">
         <td  nowrap="true">序号</td>
         <td  nowrap="true">员工编码</td>
         <td  nowrap="true">销售人员</td>
         <td  nowrap="true">T数</td>
         
         <td  nowrap="true">销售部门</td>
         <td  nowrap="true">查看简历数</td>
         <td  nowrap="true">签单金额(元)</td>
         <td  nowrap="true">效费比(签单金额/查看简历数)</td>
         
        </tr>
        通过不同的参数来调用不同的摸板
        <xsl:if test="./table0/@Type='search'">
         <xsl:call-template name="search">
          
         </xsl:call-template>
        </xsl:if>
        <xsl:if test="
./table0/@Type='searchByViewCount'">
         <xsl:call-template name="searchByViewCount">
          
         </xsl:call-template>
        </xsl:if>
        <xsl:if test="
./table0/@Type='searchByTractMoney'">
         <xsl:call-template name="searchByTractMoney">
          
         </xsl:call-template>
        </xsl:if>
        
        <tr class="reporttablehead_b">
         <td  colspan="5">合计</td>
         <td style="text-align:center">
          <xsl:value-of select="format-number(sum(./*/@ViewCount),'###,###,##0')"/>
         </td>
         <td style="text-align:right">
          <xsl:value-of select="format-number(sum(./*/@TractMoney),'###,###,##0')"/>
         </td>
         <td  ></td>
        </tr>
       </table>
      </xsl:otherwise>
     </xsl:choose>
    </center>
   </body>
  </html>
 </xsl:template>
 
 <xsl:template name="search">
  <xsl:for-each select="./table1">
   <xsl:variable name="table1Position" select="position()"/>
   <xsl:sort select="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')" data-type="number" order="descending"/>
   <!--<xsl:sort select="$condition" data-type="number" order="descending"/>-->
   
   <tr class="reporttrcenter">
    <xsl:attribute name="onMouseOver">changetrbgcolor(this,"over");</xsl:attribute>
    <xsl:attribute name="onMouseOut">changetrbgcolor(this,"out");</xsl:attribute>
    <xsl:choose>
     <xsl:when test="position() mod 2 =1">
      <xsl:attribute name="bgColor">#FFFFFF</xsl:attribute>
     </xsl:when>
     <xsl:otherwise>
      <xsl:attribute name="bgColor">#ECFBF9</xsl:attribute>
     </xsl:otherwise>
    </xsl:choose>
    <td nowrap="true">
     <xsl:value-of select="position()" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@PerID" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@PerName" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@Tnum" />
    </td>
    
    <td nowrap="true">
     <xsl:value-of select="./@DeptName" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@ViewCount" />
    </td>
    <td nowrap="true" style="text-align:right">
     <xsl:value-of select="format-number(./@TractMoney,'###,###,##0')" />
    </td>
    <xsl:choose>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')='Infinity'">
      <td nowrap="true" style="text-align:right">
       --
      </td>
     </xsl:when>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')=0">
      <td nowrap="true" style="text-align:right">
       0.00%
      </td>
     </xsl:when>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')!='Infinity'">
      <td nowrap="true" style="text-align:right">
       <xsl:value-of select="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')" />
       %
      </td>
     </xsl:when>
    </xsl:choose>
    <!--  <td nowrap="true">
     <xsl:value-of select="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')" />
     %
     </td>
    -->
   </tr>
  </xsl:for-each>
 </xsl:template>
 <xsl:template name="searchByViewCount">
  <xsl:for-each select="./table1">
   <xsl:variable name="table1Position" select="position()"/>
   <xsl:sort select="./@ViewCount" data-type="number" order="descending"/>
   <!--<xsl:sort select="$condition" data-type="number" order="descending"/>-->
   
   <tr class="reporttrcenter">
    <xsl:attribute name="onMouseOver">changetrbgcolor(this,"over");</xsl:attribute>
    <xsl:attribute name="onMouseOut">changetrbgcolor(this,"out");</xsl:attribute>
    <xsl:choose>
     <xsl:when test="position() mod 2 =1">
      <xsl:attribute name="bgColor">#FFFFFF</xsl:attribute>
     </xsl:when>
     <xsl:otherwise>
      <xsl:attribute name="bgColor">#ECFBF9</xsl:attribute>
     </xsl:otherwise>
    </xsl:choose>
    <td nowrap="true">
     <xsl:value-of select="position()" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@PerID" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@PerName" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@Tnum" />
    </td>
    
    <td nowrap="true">
     <xsl:value-of select="./@DeptName" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@ViewCount" />
    </td>
    <td nowrap="true" style="text-align:right">
     <xsl:value-of select="format-number(./@TractMoney,'###,###,##0')" />
    </td>
    <xsl:choose>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')='Infinity'">
      <td nowrap="true" style="text-align:right">
       --
      </td>
     </xsl:when>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')=0">
      <td nowrap="true" style="text-align:right">
       0.00%
      </td>
     </xsl:when>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')!='Infinity'">
      <td nowrap="true" style="text-align:right">
       <xsl:value-of select="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')" />
       %
      </td>
     </xsl:when>
    </xsl:choose>
    <!--  <td nowrap="true">
     <xsl:value-of select="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')" />
     %
     </td>
    -->
   </tr>
  </xsl:for-each>
 </xsl:template>
 <xsl:template name="searchByTractMoney">
  <xsl:for-each select="./table1">
   <xsl:variable name="table1Position" select="position()"/>
   <xsl:sort select="./@TractMoney" data-type="number" order="descending"/>
   <!--<xsl:sort select="$condition" data-type="number" order="descending"/>-->
   
   <tr class="reporttrcenter">
    <xsl:attribute name="onMouseOver">changetrbgcolor(this,"over");</xsl:attribute>
    <xsl:attribute name="onMouseOut">changetrbgcolor(this,"out");</xsl:attribute>
    <xsl:choose>
     <xsl:when test="position() mod 2 =1">
      <xsl:attribute name="bgColor">#FFFFFF</xsl:attribute>
     </xsl:when>
     <xsl:otherwise>
      <xsl:attribute name="bgColor">#ECFBF9</xsl:attribute>
     </xsl:otherwise>
    </xsl:choose>
    <td nowrap="true">
     <xsl:value-of select="position()" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@PerID" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@PerName" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@Tnum" />
    </td>
    
    <td nowrap="true">
     <xsl:value-of select="./@DeptName" />
    </td>
    <td nowrap="true">
     <xsl:value-of select="./@ViewCount" />
    </td>
    <td nowrap="true" style="text-align:right">
     <xsl:value-of select="format-number(./@TractMoney,'###,###,##0')" />
    </td>
    <xsl:choose>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')='Infinity'">
      <td nowrap="true" style="text-align:right">
       --
      </td>
     </xsl:when>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')=0">
      <td nowrap="true" style="text-align:right">
       0.00%
      </td>
     </xsl:when>
     <xsl:when test="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')!='Infinity'">
      <td nowrap="true" style="text-align:right">
       <xsl:value-of select="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')" />
       %
      </td>
     </xsl:when>
    </xsl:choose>
    <!--  <td nowrap="true">
     <xsl:value-of select="format-number( 100*(./@TractMoney div ./@ViewCount), '##0.00')" />
     %
     </td>
    -->
   </tr>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

 

 

分享到:
评论

相关推荐

    报表应用—行式报表排序

    一种是通过SQL语句直接进行数据排序。这种方法通常在数据集被提取到报表设计工具之前进行,通过修改SQL查询语句中的ORDER BY子句,来指定数据的排序方式。例如,在上述内容中提到的“订单按运货费降序排列”,可以...

    vs2005实现的数据报表模块

    Visual Studio 2005(VS2005)是一款强大的开发工具,它提供了丰富的功能来创建数据报表模块。下面我们将详细探讨如何使用VS2005实现数据报表,以及涉及到的相关技术。 1. **VS2005的报表服务** VS2005集成了...

    vb.net实现报表

    10. **事件处理和用户交互**:在报表设计中,可以添加事件处理代码,如按钮点击事件,以实现更多的交互性,如弹出对话框、触发数据操作等。 以上知识点涵盖了VB.NET实现报表的基本技术路线和关键组件。根据实际项目...

    在ASP.NET 2.0中操作数据之二十四:分页和排序报表数据

    而排序功能则允许用户通过单击列标题等操作,根据不同的数据字段来改变数据行的显示顺序。 对于分页来说,它解决了数据量过大时直接加载会导致浏览器响应缓慢和用户界面不友好的问题。分页机制通常包含“首页”、...

    AEW的组态王数据库KVADODBGRID控件关于查询、排序、数据删除例程

    本例程基于KINGVIEW 6.53开发环境,通过具体的应用案例来实现一系列的功能需求,包括数据记录的自动插入、数据查询与排序以及数据删除等操作。这些功能的实现不仅能够满足基本的数据管理需求,还能提高系统的灵活性...

    源代码(ALV 报表 F4 增删插改按钮功能).pdf

    通过添加F4增强功能,开发人员可以为ALV报表的各个字段提供下拉列表选项,使得用户可以通过按F4键来选择合适的值,从而增加报表的交互性和数据准确性。 ALV报表F4按钮功能的实现涉及到多个SAP ABAP编程对象和功能,...

    VB.net 水晶报表 动态数据源

    在运行时,通过代码将数据绑定到报表,实现数据的动态加载。 3. **动态数据源** 动态数据源允许在程序运行时根据需要更改报表的数据连接。这可能是因为数据源在运行时未知,或者因为报告需要适应不同的数据库结构...

    JasperReport 中交叉报表指南

    JasperReport 是一个功能强大且灵活的报表生成工具,它提供了许多功能来帮助开发者生成复杂的报表。在报表生成中,交叉报表是一种常用的报表类型,能够将数据按照行和列进行交叉处理,生成一个交叉表。以下是 ...

    用VC++实现通用的报表控件C++源代码程序小实例visual studio.net

    在MFC中,数据绑定可以通过CRecordView或CDaoRecordView类来实现。 3. 报表设计:报表的布局和样式设计是报表控件的重要部分。可以使用MFC的CRect和CDC类来处理绘图操作,创建各种形状、文本和图像。 4. 用户交互...

    mysql数据自动生成报表软件下载

    用户可以指定不同的数据源,比如特定的数据库表或视图,然后选择要展示的字段,设定排序和过滤条件。软件会根据这些信息自动生成报表,可以是表格形式,也可以是图表,如柱状图、饼图、折线图等,以更直观的方式展示...

    VB制作报表的实例,大家可以看看

    VB报表通常涉及到数据的处理、布局设计和交互功能实现。在这个实例中,开发者并没有依赖任何第三方控件,而是利用VB内置的功能来完成报表的制作。 首先,我们要理解VB报表的基础。在VB中,可以使用多种方法来创建...

    易飞系统自定义(画面与报表)及财务报表开发类.rar

    3. 报表视图:用户可以根据需要创建多个视图,每个视图对应不同的查询条件和排序方式,便于多角度查看数据。 三、报表开发 1. 数据源选取:易飞系统提供了丰富的数据库连接选项,包括标准的ERP表单、自定义表单...

    ArcGIS教程:创建报表

    总的来说,ArcGIS的报表功能提供了灵活的方式来展示和管理地理信息数据,无论是静态的RDF报表还是动态的RLF报表,都能满足不同需求。通过熟练掌握报表创建的步骤和技巧,用户可以更有效地分享和分析地理数据。

    VS2012开发工具C#语言 ReportViewer报表打印应用实例(含资料链接)

    报表格式的切换可以通过编程的方式实现,例如根据用户的选择动态加载不同的报表定义文件(.rdlc)。 在报表设计过程中,可以使用表达式、数据绑定和样式设置等功能,以实现复杂的数据展示效果。ReportViewer控件...

    用VS2008实现水晶报表打印功能实例

    在本文中,我们将深入探讨如何使用Visual Studio 2008(VS2008)集成开发环境来实现水晶报表(Crystal Reports)的打印功能。水晶报表是一款强大的报告设计工具,广泛应用于C#应用程序中,用于创建、设计和打印各种...

    多报表合并打印

    在这种情况下,可能需要编写自定义的PowerScript代码来实现更复杂的功能,如动态调整报表顺序、处理不同大小的报表等。 5. **数据源整合**:多报表合并可能涉及多个数据源。在PB8.0中,可以通过连接到不同的数据库...

    使用ActiveReport来开发报表打印功能

    此外,ActiveReport还支持分组、排序、过滤等功能,使得报表数据的展示更加灵活。 在权限控制方面,设计思想通常包括用户、角色和功能模块的关联。用户表存储了用户的详细信息,如用户名、全名以及分配的角色。角色...

    安讯报表JS实例

    参数设置不仅可以影响报表的生成,还可能影响到报表的过滤、排序和分组功能,因此对于实现复杂的数据查询和分析至关重要。 4. **first report with JS api.html**: 这个文件是初学者的入门指南,通过一个简单的...

    使用ReportViewer制作报表

    报表参数允许用户在运行时输入值来筛选报表数据。子报表则可以在一个报表内嵌套另一个报表,实现更复杂的数据关联和展示。 6. **权限管理** 在远程模式下,`ReportViewer`可以通过SSRS的权限控制,实现对不同用户...

    C#报表制作

    在C#中,可以通过添加按钮、下拉框等控件实现用户交互,如筛选、排序和钻取等功能。这通常需要配合事件处理程序来响应用户的操作,动态更新报表内容。 最后,报表的导出和打印功能也是不可或缺的。C#提供了多种导出...

Global site tag (gtag.js) - Google Analytics