C# 如何在窗体应用程序中显示自定义数据报表

C# 如何在窗体应用程序中显示自定义数据报表,c#,winforms,desktop-application,C#,Winforms,Desktop Application,我正在用C#窗口窗体应用程序开发一个应用程序,我有一个表 Have ID | name | value | day | stage | creation_date 1 1st 20 Mon 1 2 2nd 30 Mon 2 3 3rd 15 Tue 1 4 4th 10 Wed 3 5 5th 25 Thu 4 6 6th 15 Fr

我正在用C#窗口窗体应用程序开发一个应用程序,我有一个表

Have

ID | name | value | day | stage | creation_date
1     1st    20     Mon    1
2     2nd    30     Mon    2
3     3rd    15     Tue    1
4     4th    10     Wed    3
5     5th    25     Thu    4
6     6th    15     Fri    1
7     7th    10     Fri    2
8     8th    30     Sat    3
9     9th    20     Sat    1
10    10th   20     Sun    4
现在我想做一些统计

Want

Mon       Tue       Wed       Thu      Fri      Sat      Sun
1st-20$    3rd-15$  4th-10$   5th-25$  6th-15$  8th-30$  10th-20$
2nd-30$                                7th-10$  9th-20$
每个阶段代表一种独特的颜色,我想把它作为对应表单元格的背景色

范例

1 -> green
2 -> orange
3 -> grey
4 -> yellow
我在下面附上了一张图片,以展示我想在统计表上显示的内容

我将按进行过滤,并希望我的表格相应地显示数据以及舞台的背景色

这就是我到目前为止所做的

 public partial class Report : Form
    {
        DataTable table = new DataTable();
        DatabaseEntities db = new DatabaseEntities();
        public Report()
        {
            InitializeComponent();

            table.Columns.Add("Monday", typeof(string));
            table.Columns.Add("Tuesday", typeof(string));
            table.Columns.Add("Wednesday", typeof(string));
            table.Columns.Add("Thursday", typeof(string));
            table.Columns.Add("Friday", typeof(string));
            table.Columns.Add("Saturday", typeof(string));
            table.Columns.Add("Sunday", typeof(string));

            var Monday = db.Tables.Where(x => x.Week == "Monday").Select(x=> x ).ToList();
            var Tuesday = db.Tables.Where(x => x.Week == "Tuesday").Select(x => x).ToList();
            var Wednesday = db.Tables.Where(x => x.Week == "Wednesday").Select(x => x).ToList();
            var Thursday = db.Tables.Where(x => x.Week == "Thursday").Select(x => x).ToList();
            var Friday = db.Tables.Where(x => x.Week == "Friday").Select(x => x).ToList();
            var Saturday = db.Tables.Where(x => x.Week == "Saturday").Select(x => x).ToList();
            var Sunday = db.Tables.Where(x => x.Week == "Sunday").Select(x => x).ToList();

            ReportTable.DataSource = table;

        }

    }
我无法通过将数据添加到行中

table.Rows.Add("Monday data", "Tuesday data", "Wednesday data", "Thursday data", "Friday data", "Saturday data", "Sunday data");

因为我不能为每七个列表设置foreach,然后根据stage设置背景。

我编写了这段代码作为解决方案

            var Monday = db.JobTables.Where(x => x.Day == "Monday").Select(x => x).ToList();
            int Monday_count = db.JobTables.Where(x => x.Day == "Monday").Count();

            var Tuesday = db.JobTables.Where(x => x.Day == "Tuesday").Select(x => x).ToList();
            int Tuesday_count = db.JobTables.Where(x => x.Day == "Tuesday").Count();

            var Wednesday = db.JobTables.Where(x => x.Day == "Wednesday").Select(x => x).ToList();
            int Wednesday_count = db.JobTables.Where(x => x.Day == "Wednesday").Count();

            var Thursday = db.JobTables.Where(x => x.Day == "Thursday").Select(x => x).ToList();
            int Thursday_count = db.JobTables.Where(x => x.Day == "Thursday").Count();

            var Friday = db.JobTables.Where(x => x.Day == "Friday").Select(x => x).ToList();
            int Friday_count = db.JobTables.Where(x => x.Day == "Friday").Count();

            var Saturday = db.JobTables.Where(x => x.Day == "Saturday").Select(x => x).ToList();
            int Saturday_count = db.JobTables.Where(x => x.Day == "Saturday").Count();

            var Sunday = db.JobTables.Where(x => x.Day == "Sunday").Select(x => x).ToList();
            int Sunday_count = db.JobTables.Where(x => x.Day == "Sunday").Count();

            int max_1 = Math.Max(Math.Max(Monday_count, Tuesday_count), Wednesday_count);
            int max_2 = Math.Max(Math.Max(Thursday_count, Friday_count), Saturday_count);
            int MAX = Math.Max(Math.Max(max_1, max_2), Sunday_count);


            String[,] array = new string[MAX, 7];

            for (int i = 0; i < MAX; i++)
            {
                array[i, 0] = "";
                array[i, 1] = "";
                array[i, 2] = "";
                array[i, 3] = "";
                array[i, 4] = "";
                array[i, 5] = "";
                array[i, 6] = "";

                if (Monday_count > i)
                    array[i, 0] = Monday[i].Job_Number +" -- "+ Monday[i].Job_Value +"$";
                if (Tuesday_count > i)
                    array[i, 1] = Tuesday[i].Job_Number + " -- " + Tuesday[i].Job_Value + "$";
                if (Wednesday_count > i)
                    array[i, 2] = Wednesday[i].Job_Number + " -- " + Wednesday[i].Job_Value + "$";
                if (Thursday_count > i)
                    array[i, 3] = Thursday[i].Job_Number + " -- " + Thursday[i].Job_Value + "$";
                if (Friday_count > i)
                    array[i, 4] = Friday[i].Job_Number + " -- " + Friday[i].Job_Value + "$";
                if (Saturday_count > i)
                    array[i, 5] = Saturday[i].Job_Number + " -- " + Saturday[i].Job_Value + "$";
                if (Sunday_count > i)
                    array[i, 6] = Sunday[i].Job_Number + " -- " + Sunday[i].Job_Value + "$";

                table.Rows.Add(array[i, 0], array[i, 1], array[i, 2], array[i, 3], array[i, 4], array[i, 5], array[i, 6]);
            }

ReportGrid.DataSource = table;
var Monday=db.JobTables.Where(x=>x.Day==“星期一”)。选择(x=>x.ToList();
int Monday_count=db.JobTables.Where(x=>x.Day==“Monday”).count();
VarTuesday=db.JobTables.Where(x=>x.Day==“星期二”)。选择(x=>x.ToList();
int tuday_count=db.JobTables.Where(x=>x.Day==“星期二”).count();
var周三=db.JobTables.Where(x=>x.Day==“周三”)。选择(x=>x.ToList();
int周三_count=db.JobTables.Where(x=>x.Day==“周三”).count();
var星期四=db.JobTables.Where(x=>x.Day==“星期四”)。选择(x=>x.ToList();
int星期四计数=db.JobTables.Where(x=>x.Day==“星期四”).count();
var Friday=db.JobTables.Where(x=>x.Day==“Friday”)。选择(x=>x.ToList();
int Friday_count=db.JobTables.Where(x=>x.Day==“Friday”).count();
var Saturday=db.JobTables.Where(x=>x.Day==“Saturday”)。选择(x=>x.ToList();
int Saturday_count=db.JobTables.Where(x=>x.Day==“Saturday”).count();
var Sunday=db.JobTables.Where(x=>x.Day==“Sunday”)。选择(x=>x.ToList();
int Sunday_count=db.JobTables.Where(x=>x.Day==“Sunday”).count();
int max\u 1=Math.max(Math.max(星期一、星期二、星期三);
int max_2=Math.max(Math.max(星期四、星期五、星期六);
int MAX=Math.MAX(Math.MAX(MAX_1,MAX_2),星期日计数);
字符串[,]数组=新字符串[MAX,7];
对于(int i=0;ii)
数组[i,0]=Monday[i]。作业编号+“--”+Monday[i]。作业值+“$”;
如果(星期二计数>i)
数组[i,1]=星期二[i]。作业编号+“--”+Tuesday[i]。作业值+“$”;
如果(星期三)
数组[i,2]=星期三[i]。作业编号+“--”+Triday[i]。作业值+“$”;
如果(星期四计数>i)
数组[i,3]=星期四[i]。作业编号+“--”+Thready[i]。作业值+“$”;
如果(星期五计数>i)
数组[i,4]=Friday[i]。作业编号+“--”+Friday[i]。作业值+“$”;
如果(星期六计数>i)
数组[i,5]=Saturday[i]。作业编号+“--”+Saturday[i]。作业值+“$”;
如果(星期日计数>i)
数组[i,6]=Sunday[i]。作业号+“--”+Sunday[i]。作业值+“$”;
表.Rows.Add(数组[i,0],数组[i,1],数组[i,2],数组[i,3],数组[i,4],数组[i,5],数组[i,6]);
}
ReportGrid.DataSource=表;

到目前为止您尝试了什么?这看起来是一项非常基本的工作,不要让别人帮你做作业。只有当您遇到真正的代码问题时,我们才会帮助您。@AleksaRistic谢谢您的帮助。我可以附加datagridview来设置并附加按钮来执行基本crud,但我在创建自定义列时遇到问题。你能提供一些好的链接吗?@zackraiyan我已经更新了我的问题。我现在来看看