【问题标题】:how to show customized data report in window form applications如何在窗体应用程序中显示自定义数据报表
【发布时间】:2018-10-01 14:06:23
【问题描述】:

我正在用 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

我在下面附上了一张图片来展示我想在我的统计表格上显示的内容

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

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

 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,然后根据阶段设置背景。

【问题讨论】:

  • 到目前为止你尝试了什么?看起来很基础的工作
  • 不要让别人帮你做作业。我们只会在您遇到真正的代码问题时为您提供帮助。
  • @AleksaRistic 感谢您的帮助。我可以附加 datagridview 来设置和附加按钮来执行基本的操作,但我在创建自定义列时遇到了麻烦。请您为此提供任何好的链接。
  • @zackraiyan 我已经更新了我的问题。
  • 我现在去看看

标签: c# winforms desktop-application


【解决方案1】:

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

            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;

【讨论】:

    猜你喜欢
    • 2013-07-12
    • 2020-06-12
    • 2021-03-19
    • 1970-01-01
    • 2020-12-11
    • 2012-03-23
    • 2010-11-21
    • 2020-10-08
    • 1970-01-01
    相关资源
    最近更新 更多