如何定义数据源的布局



我有一个C#程序,它需要显示一个包含2个序列对象的图表。目前,我只有一个包含2个数据表的数据集。这两张表的布局相同。我将数据集绑定到图表的datasource属性,并执行databind()方法。它只显示一个系列。

我认为解决方案在于定义一个自定义绑定上下文,但我似乎无法理解。有人能帮帮我吗?谢谢

以下是我的一些代码:

        DataSet dataSet = new DataSet();
        DataTable dataTable = database.Query("select sum(amount) as monthamount, month(transdate) as month from transaction where year(transdate)=" + balanceDateTimePicker.Value.Year + " group by month");
        dataSet.Tables.Add(dataTable);
        dataTable = database.Query("select sum(amount) as monthamount, month(transdate) as month from transaction where year(transdate)=" + balanceDateTimePicker.Value.AddYears(-1).Year + " group by month");
        dataSet.Tables.Add(dataTable);
        reoccuranceChart.DataSource = dataSet;
        System.Windows.Forms.DataVisualization.Charting.Series series = reoccuranceChart.Series["Series1"];
        series.XValueMember = "month";
        series.YValueMembers = "monthamount";
        series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
        series.IsVisibleInLegend = false;
        series = reoccuranceChart.Series["Series2"];
        series.XValueMember = "month";
        series.YValueMembers = "monthamount";
        series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
        series.IsVisibleInLegend = false;
        reoccuranceChart.DataBind();

我找到了它。它实际上相当简单。我所要做的就是,单独绑定系列。点:

        DataSet dataSet = new DataSet();
        DataTable dataTable = database.Query("select sum(amount) as monthamount, month(transdate) as month from transaction where year(transdate)=" + balanceDateTimePicker.Value.Year + " group by month");
        dataSet.Tables.Add(dataTable);
        dataTable = database.Query("select sum(amount) as monthamount, month(transdate) as month from transaction where year(transdate)=" + balanceDateTimePicker.Value.AddYears(-1).Year + " group by month");
        dataSet.Tables.Add(dataTable);
        System.Windows.Forms.DataVisualization.Charting.Series series = reoccuranceChart.Series["Now"];
        series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
        //series.IsVisibleInLegend = false;
        series.Points.DataBind(dataSet.Tables[0].DefaultView, "month", "monthamount", "");
        series = reoccuranceChart.Series["Last year"];
        series.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
        //series.IsVisibleInLegend = false;
        series.Points.DataBind(dataSet.Tables[1].DefaultView, "month", "monthamount", "");

我认为您的问题在于重用dataTable变量。您需要为第二个查询创建第二个DataTable,以防止重新分配第一个,因为Add函数不会复制表中的数据,它只是保存对它的引用。请尝试更改:

dataTable = database.Query ...

 DataTable dataTable2 = database.Query...

然后将其添加到第二个表中,看看是否修复了它。

最新更新