文档章节

在C#中进行数据纵向不定行转横向列,多条信息成一行,例如员工薪资信息

深圳大道
 深圳大道
发布于 2016/12/29 15:39
字数 315
阅读 6
收藏 0
DataTable dt = Maticsoft.DBUtility.DbHelperOra.Query(QuerySql).Tables[0]; //DT的数据如下图所示
                string CoverID = dt.Rows.Count > 0 ? dt.Rows[0]["CoverID"].ToString() : "";

                #region 创建新的DataTable
                DataTable dtShow = new DataTable();
                dtShow.Columns.Add("序号", Type.GetType("System.String"));
                dtShow.Columns.Add("部门", Type.GetType("System.String"));
                dtShow.Columns.Add("编号", Type.GetType("System.String"));
                dtShow.Columns.Add("姓名", Type.GetType("System.String"));

                dtShow.Columns.Add("职务", Type.GetType("System.String"));
                dtShow.Columns.Add("期间", Type.GetType("System.String"));
                dtShow.Columns.Add("开始日期", Type.GetType("System.String"));
                dtShow.Columns.Add("结束日期", Type.GetType("System.String"));

                DataTable dtCover = Maticsoft.DBUtility.DbHelperOra.Query("select a.*,b.itemname from sa_accountci a left join sa_accountcoveritems b on a.itemid=b.itemid where a.coverid='" + CoverID + "'  order by a.itemsortflag ").Tables[0];
                if (dtCover.Rows.Count > 0)
                {
                    for (int i = 0; i < dtCover.Rows.Count; i++)
                    {
                        dtShow.Columns.Add(dtCover.Rows[i]["ITEMNAME"].ToString(), Type.GetType("System.String"));
                    }
                }
                #endregion

                #region 插入数据到新创建的DataTable
                int p = 1; //行号
                for (int n = 0; n < dt.Rows.Count; n++)
                {
                    string EMPLOYEEID = dt.Rows[n]["EMPLOYEEID"].ToString();
                    //判断是否最末一行  
                    string CompareEMPLOYEEID = (n == dt.Rows.Count - 1) ? "000000" : dt.Rows[n + 1]["EMPLOYEEID"].ToString();
                    if (CompareEMPLOYEEID != EMPLOYEEID) //比较当前行与下行ID 不同ID 则添加本行数据  
                    {
                        DataRow dr = dtShow.NewRow();
                        dr["序号"] = p;
                        dr["部门"] = dt.Rows[n]["EMPLOYDEP"];
                        dr["编号"] = dt.Rows[n]["EMPLOYEEID"];
                        dr["姓名"] = dt.Rows[n]["EMPLOYEENAME"];

                        dr["职务"] = dt.Rows[n]["POST"];
                        dr["期间"] = dt.Rows[n]["CYCLENAME"];
                        dr["开始日期"] = dt.Rows[n]["CYCLESTARTDATE"];
                        dr["结束日期"] = dt.Rows[n]["CYCLEENDDATE"];
                        for (int j = 0; j < dtShow.Columns.Count; j++)
                        {
                            DataRow[] dr1 = dt.Select("EMPLOYEEID='" + EMPLOYEEID + "' AND ITEMNAME='" + dtShow.Columns[j].ColumnName + "'");
                            if (dr1.Length > 0)
                            {
                                dr[dtShow.Columns[j].ColumnName] = dr1[0]["AMOUNT"].ToString();
                            }
                        }
                        dtShow.Rows.Add(dr);
                        p++;
                    }
                }
                #endregion


处理后显示结果如下

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/8105278

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
论低于 12px 字体处理方案

浏览器可渲染的最小字号为 12px,但设计图上经常出现小于该值的字体。对于 11px 我往往就按 12px 处理了,可 9px 这样的超小字号处理成 12px 绝对太不地道啊。大家可能都知道通过 transform:...

呆恋小喵_sunmy
2018/07/13
0
0
FineUIPro v3.2.0 发布,ASP.NET 控件库

FineUIPro v3.2.0 发布了,该版本更新如下: 78. 简化跨页选中行的实现 v3.2.0新增属性ClearSelectionBeforePaging,将原来 80 行实现代码简化为 8 行。 79. 大数据表格分页(网址数据源) ...

三生石上
2016/08/23
1K
6
Python基础 | pandas.dataframe 专题使用指南

1.选取行名、列名、值 2.以标签(行、列的名字)为索引选择数据—— x.loc[行标签,列标签] 3.以位置(第几行、第几列)为索引选择数据—— x.iloc[行位置,列位置] 4.同时根据标签和位置选择数...

技术小能手
2018/08/02
0
0
Linux 必掌握的 SQL 命令

数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据。平面文本文件可能适合相对较少的数据,但它们对存储大量数据或查询该数据没有多大帮助。多年来,为该目的开发了多种数据...

linuxprobe
2016/07/05
15
0
Flexible Box 布局与小程序开发

Flexible Box 布局与小程序开发 参考资料: 1.A Complete Guide to Flexbox BY CHRIS COYIER 2.Flex 布局教程:语法篇 3.Flex 布局教程:实例篇 4.A Visual Guide to CSS3 Flexbox Propertie......

坚果jimbowhy
2018/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
1
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
2
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部