【问题标题】:C# chart Datetime to DateC# 图表日期时间到日期
【发布时间】:2019-06-19 04:45:33
【问题描述】:

我有一个绑定到“BindingSource”的图表。 我使用绑定源中的日期列作为 X 轴,如下所示:

chart1.Series["chart"].XValueMember = "Date");

另一方面,我的问题是它还需要考虑小时/分钟/秒。 (因此,与其将一整天归为一个小节,不如将一天分成几个小节)

有没有办法确保图表中的小时/分钟/秒被忽略,而只是每天分组在一起?无需更改数据源(对于使用相同数据源的 datagridview 来说,查看秒数和其他内容很重要)(在此期间,是否也可以数月/数年做到这一点?)

图表的完整代码:

BindingSource Datasource= new BindingSource();
Datasource.DataSource = Selected_DataTables;
        chart1.Series.Clear();
        chart1.Series.Add("chart");
        chart1.Series["chart"].XValueMember = "Date";
        chart1.Series["chart"].YValueMembers = "Sales";
        chart1.DataSource = Datasource;
        chart1.DataBind();

(“Selected_DataTables”是可选数据库查询结果的集合)

【问题讨论】:

  • 你不能只修复数据以按日期分组吗?
  • 我认为创建 ViewModel 之类的东西并以您希望它在报告中显示的方式转换数据会更好。为了获得没有小时/分钟/秒的日期,您可以简单地获取日期列的Date 属性。
  • 我的意思是在 将数据提供给图表之前对数据进行分组。
  • 在这种情况下,Datasource 是什么? :)
  • @A.Bakker - 请提供填写DataTable 的数据的代码。这是唯一相关的代码。

标签: c# winforms charts


【解决方案1】:

我的解决方案是制作原始数据表的副本,并将该副本复制到图表的数据源中。副本对原件没有影响,因此我可以使用下面的代码将其转换为我想要的格式。希望它可以帮助某人。

    DataTable chart_DateTable = new DataTable();
    chart_DateTable = Selected_DataTables.Copy();


    foreach (DataRow row in chart_DateTable.Rows)
    {

        DateTime test2 = DateTime.Parse(row["Datum"].ToString());
        row["Datum"] = test2.Date;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-06
    • 2011-12-03
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2019-08-28
    相关资源
    最近更新 更多