C# 如何在窗体应用程序中显示自定义数据报表
我正在用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
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我已经更新了我的问题。我现在来看看