怎么datatable添加值,从图一到图2?

时间:2022-05-03 08:02:55
public List<DataContract.ClinicInCharge.Records_Moneys> Querydgvlist(string months)//
        {

            string sql = string.Empty, err = string.Empty;
            DataTable dt = new DataTable();
            sql = string.Format(@"
                            SELECT a.months, b.dept_code ,b.dept_name ,
                                    c.user_code , isnull(c.user_name,username) as user_name,a.moneys,e.tax
                                    ,a.userid,a.deptid,a.id,a.RecordUser,a.RecordTime,a.iscw,a.isExtra
                                FROM {0}  a 
                                inner join {1} b on a.deptid=b.deptid
                                left outer join {2} c on c.userid=a.userid 
                                left join   RecordsMoneys_Add d on a.id =d.MoneyId  
                                left  join  RecordMoney_tax e on a.userid=e.userid                        
                                where a.months='{3}'
                                order by a.months                      
                                ", TableName, Tables.tbDeptList, Tables.tbuser, months);
            dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err);
            List<DataContract.ClinicInCharge.public_dataselect> itemNameselects =
                    ThisHQ.Base.Base.取基础数据列表s(DataContract.Enums.DataSelect.奖金分类.ToString());
            DataTable dtCover = DataConverter.FillDataTable(itemNameselects.ToList());

            //for (int a = 0; a < dt.Rows.Count; a++)
            //{
            //    int id = DataConverter.ToInt(dt.Rows[a]["userid"]);
                if (dtCover.Rows.Count > 0)
                {
                    for (int i = 0; i < dtCover.Rows.Count; i++)
                    {
                        string itemName1 = dtCover.Rows[i]["colvalue"].ToString();
                        dt.Columns.Add(itemName1, Type.GetType("System.String"));
                        //decimal Moneys = QueryMoneys(id, itemName1, 0);
                    }
                }
            //}
            if (err.Length > 0)
            {
                throw new Exception(err);
            }
            return DataConverter.DataTableToIList<DataContract.ClinicInCharge.Records_Moneys>(dt).ToList();
        }
怎么datatable添加值,从图一到图2?怎么datatable添加值,从图一到图2?

6 个解决方案

#1


你先学习一下主外键关联。
你需要设置应发奖金等等的id,然后在另一个表使用这个id。
最后通过
select 列.... from 表 
left join 奖金类型表
这样的形式

#2


 SELECT *
 FROM   ( SELECT    *
          FROM      Records_Moneys a ,
                    public_DataSelect f
        ) t
        INNER JOIN public_dept_list b ON t.deptid = b.deptid
        LEFT OUTER JOIN public_user_list c ON c.userid = t.userid
        LEFT JOIN RecordsMoneys_Add d ON t.id = d.MoneyId
        LEFT  JOIN RecordMoney_tax e ON t.userid = e.userid
 WHERE  t.months = '2018-02-01'
        AND t.colname = '奖金分类'
 ORDER BY t.months  

#3


引用 1 楼 正怒月神的回复:
你先学习一下主外键关联。
你需要设置应发奖金等等的id,然后在另一个表使用这个id。
最后通过
select 列.... from 表 
left join 奖金类型表
这样的形式

这是贴吧版主大神!

#4


先学习下基本的内联、外联等

#5



左图为 DataTable dt
则有
            var dt2 = new DataTable();
            foreach (DataRow tr in dt.Rows)
            {
                if (!dt2.Columns.Contains((string)tr[0])) dt2.Columns.Add((string)tr[0], tr[1].GetType());
            }
            var buf = new List<object>();
            foreach (DataRow tr in dt.Rows)
            {
                if (dt2.Columns.IndexOf((string)tr[0]) == 0 && buf.Count > 0)
                {
                    dt2.Rows.Add(buf.ToArray());
                    buf = new List<object>();
                }                
                buf.Add(tr[1]);
            }
            dt2.Rows.Add(buf.ToArray());
            dataGridView1.DataSource = dt2; //作为有图的数据源

#6


我的建议是你插到数据库中然后关联一把 /你用这种方式 只适用于小数据量 /而且你这样查询出来不便于二次查询和操作 。希望能帮助到你 。

#1


你先学习一下主外键关联。
你需要设置应发奖金等等的id,然后在另一个表使用这个id。
最后通过
select 列.... from 表 
left join 奖金类型表
这样的形式

#2


 SELECT *
 FROM   ( SELECT    *
          FROM      Records_Moneys a ,
                    public_DataSelect f
        ) t
        INNER JOIN public_dept_list b ON t.deptid = b.deptid
        LEFT OUTER JOIN public_user_list c ON c.userid = t.userid
        LEFT JOIN RecordsMoneys_Add d ON t.id = d.MoneyId
        LEFT  JOIN RecordMoney_tax e ON t.userid = e.userid
 WHERE  t.months = '2018-02-01'
        AND t.colname = '奖金分类'
 ORDER BY t.months  

#3


引用 1 楼 正怒月神的回复:
你先学习一下主外键关联。
你需要设置应发奖金等等的id,然后在另一个表使用这个id。
最后通过
select 列.... from 表 
left join 奖金类型表
这样的形式

这是贴吧版主大神!

#4


先学习下基本的内联、外联等

#5



左图为 DataTable dt
则有
            var dt2 = new DataTable();
            foreach (DataRow tr in dt.Rows)
            {
                if (!dt2.Columns.Contains((string)tr[0])) dt2.Columns.Add((string)tr[0], tr[1].GetType());
            }
            var buf = new List<object>();
            foreach (DataRow tr in dt.Rows)
            {
                if (dt2.Columns.IndexOf((string)tr[0]) == 0 && buf.Count > 0)
                {
                    dt2.Rows.Add(buf.ToArray());
                    buf = new List<object>();
                }                
                buf.Add(tr[1]);
            }
            dt2.Rows.Add(buf.ToArray());
            dataGridView1.DataSource = dt2; //作为有图的数据源

#6


我的建议是你插到数据库中然后关联一把 /你用这种方式 只适用于小数据量 /而且你这样查询出来不便于二次查询和操作 。希望能帮助到你 。