Code
有时候为了节省打印纸张,通常要吧结果分栏显示,这就需要把DataTable两列转换为四列

报表分页时 添加组并添加表达式:

=Int((RowNumber(Nothing)-1)/15)//每页显示15条记录

(两外一个表达式意义不是很清楚=Ceiling(RowNumber(Nothing)/20) )

/// <summary>
        /// 两列转换为四列
        /// </summary>
        /// <param name="pagesize">每页大小</param>
        /// <param name="table"></param>
        /// <returns></returns>
        private DataTable GetStudentRegesterBook(int pagesize,DataTable table)
        {
            
            DataTable dt = new DataTable();
            int rows = table.Rows.Count;
            if (rows > 0)
            {
                dt.Columns.Add("xh1", typeof(string));
                dt.Columns.Add("xm1", typeof(string));
                dt.Columns.Add("xh2", typeof(string));
                dt.Columns.Add("xm2", typeof(string));

int pagecount = 0;
                pagecount = rows / pagesize;
                if (pagecount * pagesize < rows)
                    pagecount = pagecount + 1;

int i, j, k;
                //考虑前pagecount-1页
                if (rows > 0)
                {
                    for (i = 0; i < pagecount - 1; i++)
                    {
                        if (i % 2 == 0)
                        {
                            for (j = 0; j < pagesize; j++)
                            {
                                DataRow dr = dt.NewRow();
                                dr["xh1"] = table.Rows[j + i * pagesize]["xh"].ToString();
                                dr["xm1"] = table.Rows[j + i * pagesize]["xm"].ToString();
                                dt.Rows.Add(dr);
                            }
                        }
                        else
                        {
                            for (k = 0; k < pagesize; k++)
                            {

dt.Rows[k + (i / 2) * pagesize]["xh2"] = table.Rows[k + i * pagesize]["xh"].ToString();
                                dt.Rows[k + (i / 2) * pagesize]["xm2"] = table.Rows[k + i * pagesize]["xm"].ToString();

}
                        }

}
                    //考虑最后一页
                    //奇数页
                    if (pagecount % 2 == 1)
                    {

for (k = 0; k < rows - (pagecount - 1) * pagesize; k++)
                        {
                            DataRow dr = dt.NewRow();
                            dr["xh1"] = table.Rows[k + i * pagesize]["xh"].ToString();
                            dr["xm1"] = table.Rows[k + i * pagesize]["xm"].ToString();
                            dt.Rows.Add(dr);
                        }
                    }
                    else
                    {
                        //偶数页
                        for (k = 0; k < rows - (pagecount - 1) * pagesize; k++)
                        {

dt.Rows[k + (i / 2) * pagesize]["xh2"] = table.Rows[k + i * pagesize]["xh"].ToString();
                            dt.Rows[k + (i / 2) * pagesize]["xm2"] = table.Rows[k + i * pagesize]["xm"].ToString();

}
                    }
                }
            }

return dt;

}

转载于:https://www.cnblogs.com/hubcarl/archive/2009/05/10/1453475.html

DataTable两列转换四列相关推荐

  1. SQL 两行两列显示一行四列或一行两列

    前言 两行两列显示一行四列 id A B 1 aaa bbb 1 ccc ddd ==>转化为 id A B A B 1 aaa bbb ccc ddd SQL 一对多转为一对一 解决 方法一 ...

  2. dataframe的两列转换成字典的key和value

    dataframe的两列转换成字典的key和value 1.存为按插入顺序的字典OrderedDict csv文件内容: import pandas as pd import collections ...

  3. oracle 动态sql列转行_Oracle 行转列 动态出转换的列

    10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...

  4. ssis 列转换_SSIS中的术语提取转换

    ssis 列转换 This article explores the Term extraction transformation in SSIS and its usage scenario. 本文 ...

  5. ssis 列转换_将SSIS包转换为Biml脚本

    ssis 列转换 In our previous article, Getting started with Biml, we have explained what Biml is, what ar ...

  6. Oracle 行转列 动态出转换的列

    10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...

  7. oracle 动态行转成列,Oracle 行转列 动态出转换的列

    一.运行环境 Win10,Oracle Database 11g r2,plsql 12. 二.效果预览 1.固定转换列的方法 2.存储过程处理 1)调用存储过程 2)查指定的视图即可 3.两种方法的 ...

  8. 《BI那点儿事》数据流转换——派生列

    原文:<BI那点儿事>数据流转换--派生列 派生列转换通过对转换输入列应用表达式来创建新列值. 表达式可以包含来自转换输入的变量.函数.运算符和列的任意组合. 结果可作为新列添加,也可作为 ...

  9. ssis 列转换_SSIS包中的行采样转换和百分比采样转换

    ssis 列转换 This article explores Row Sampling Transformations in SSIS and Percentage Sampling Transfor ...

最新文章

  1. python随机补边缘border
  2. c++/c SM4加密解密算法代码实现
  3. hdu 3706 Second My Problem First 单调队列
  4. 施密特触发器(Schmitt Trigger)?
  5. 让Kubernetes成为数据中心操作系统的一等公民
  6. 喜欢赌球的你,可能被AI盯上了
  7. Python自然语言处理学习笔记(64): 7.5 命名实体识别
  8. Java中的内存模型JMM与线程
  9. js爬取网页文字图片 html爬取网页信息
  10. 如何提高射频信号发生器的性能
  11. 寻找心灵深处的菩提树
  12. 发票校验属于物料管理(MM)模块,发票为财务和成本控制提供付款信息和发票评估。
  13. 设计递归函数模拟汉诺塔游戏
  14. [翻译]Billy Belceb 病毒编写教程for Win32
  15. 外存及虚拟存储器管理
  16. ORA-00257: archiver error. Connect internal only, until freed 的解决方法
  17. 前端 html button标签
  18. 支持将树莓派转换成NAS存储系统
  19. 西门子plm_一个月内接连收购两家企业,西门子不断加码工业软件,巨头的数字化决心...
  20. 计算机二级excel降水量分值,计算机二级Excel条件格式的8大用法,太全了!

热门文章

  1. mysql explain key为空_MySQL中explain的使用以及性能分析
  2. java 文件追加文本_Java追加文件内容的三种方法
  3. jenkins修改pom文件_DevOps实践:Jenkins与Nexus制品库集成
  4. gawk如何在win7安装_电脑怎样安装win7系统
  5. php远程simplexml_load_string()出错,PHP simplexml_load_string无法正常工作
  6. 统计字符串中每个字符的个数_C++程序设计——统计数字字符个数
  7. java class object_[java]Class类和Object类的关系
  8. C语言丨线性表(三):双链表
  9. mysql三高讲解(二)2.9: mysql示例数据库sakia database的使用
  10. vs2015项目导出为Qt项目