MVC 统计之 自定义 列表

实际上,我遇到一个统计的需求. 项目个数不确定(可维护),人员个数不确定(可维护)

行列都不确定的情况下.要统计每个人每天项目所使用时间的数据..最后使用动态table 完成功能.

效果:

 

后台:

       public ActionResult Search(string CreatetimeS, string CreatetimeE, string Project, Guid? Createby)
        {
            List<EM_Employee> EM_Employees = db.EM_Employee.ToList();
            ViewBag.Createby = new SelectList(EM_Employees, "EmID", "EMRealName");
            List<SYS_DD> SYS_DD_Projects = db.SYS_DD.Where(dd => dd.DDType == "Project").OrderBy(dd => dd.DDCode).ToList();
            ViewBag.Project = new SelectList(SYS_DD_Projects, "DDCode", "DDName");
            if (Createby != null)
            {
                EM_Employees = EM_Employees.Where(em => em.EmID == Createby).ToList();
            }
            if (!string.IsNullOrEmpty(Project))
            {
                SYS_DD_Projects = SYS_DD_Projects.Where(s => s.DDCode == Project).ToList();
            }
            DataTable dt = DataTableCalculate(Convert.ToDateTime(CreatetimeS), Convert.ToDateTime(CreatetimeE), EM_Employees, SYS_DD_Projects);

            //return Json("json");
            return View("Index", dt);
        }
        private DataTable DataTableCalculate(DateTime startTime, DateTime endTime, List<EM_Employee> EM_Employees, List<SYS_DD> SYS_DD_Projects)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Employees");
            foreach (var Project in SYS_DD_Projects)
            {
                dt.Columns.Add(Project.DDName);
            }
            foreach (var Employee in EM_Employees)
            {
                var row = dt.NewRow();
                row["Employees"] = Employee.EMRealName;
                foreach (var Project in SYS_DD_Projects)
                {
                    row[Project.DDName] = db.Hours.Where(h => h.Createtime >= startTime && h.Createtime <= endTime && h.Createby == Employee.EmID && h.Project == Project.DDCode)
                    .Sum(h => (double?)h.SpendHours);
                }
                dt.Rows.Add(row);
            }
            return dt;
        }

 

前台:

@model System.Data.DataTable
@if (Model != null)
{
    <table class="table">
        <tr>
            @foreach (System.Data.DataColumn column in Model.Columns)
                {
                <th>
                    @column.ColumnName
                </th>
            }
        </tr>

        @foreach (System.Data.DataRow row in Model.Rows)
        {
            <tr>
                @foreach (System.Data.DataColumn column in Model.Columns)
                {
                    <td>
                        @row[column.ColumnName]
                    </td>
                }
            </tr>
        }
    </table>
}

 

转载于:https://www.cnblogs.com/cxd1008/p/8085419.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值