DataTable两列转换四列

本文介绍了一种将DataTable中两列数据转换为四列以实现节省打印纸张的方法,并展示了如何通过添加组和表达式实现报表的分页显示,每页可显示15条记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ContractedBlock.gif ExpandedBlockStart.gif 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值