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

qq_32320747 2018-03-22 04:26:09
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();
}
...全文
338 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jason_Mao1 2018-03-26
  • 打赏
  • 举报
回复
我的建议是你插到数据库中然后关联一把 /你用这种方式 只适用于小数据量 /而且你这样查询出来不便于二次查询和操作 。希望能帮助到你 。
xuzuning 2018-03-25
  • 打赏
  • 举报
回复
设 左图为 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; //作为有图的数据源
不再开口丶 2018-03-25
  • 打赏
  • 举报
回复
先学习下基本的内联、外联等
sighful1986 2018-03-24
  • 打赏
  • 举报
回复
引用 1 楼 正怒月神的回复:
你先学习一下主外键关联。 你需要设置应发奖金等等的id,然后在另一个表使用这个id。 最后通过 select 列.... from 表 left join 奖金类型表 这样的形式
这是贴吧版主大神!
zyy1111111 2018-03-23
  • 打赏
  • 举报
回复
 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  
正怒月神 2018-03-22
  • 打赏
  • 举报
回复
你先学习一下主外键关联。 你需要设置应发奖金等等的id,然后在另一个表使用这个id。 最后通过 select 列.... from 表 left join 奖金类型表 这样的形式

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧