DataTable纵向记录转换成横向列显示,动态新增列及填充数据

DataTable dt = Maticsoft.DBUtility.DbHelperOra.Query(QuerySql).Tables[0];

#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 = GetCoverItemDT();  
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 插入员工薪资项数据到dtShow   
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


 

转载于:https://my.oschina.net/smartsmile/blog/815038

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值