来自 DataSet 的多个系列
Multiple Series from DataSet
我有一个相对简单的问题,我想在一个包含 2 table 的 DataSet 的图表中显示 2 个简单的线系列。
现在我只是创建了第二个具有相同 ValueMembers 的系列,但它们显示在彼此之上。 DataSet 已正确填充不同的值。
dataAdapter.Fill(dataSetChart);
chartKunden.Series.Add("Kunden");
chartKunden.Series.Add("Table1");
chartKunden.Series["Kunden"].ChartType = SeriesChartType.Line;
chartKunden.Series["Table1"].ChartType = SeriesChartType.Column;
chartKunden.Series["Table1"].XValueMember = "Woche";
chartKunden.Series["Table1"].YValueMembers = "Stunden";
chartKunden.Series["Kunden"].XValueMember = "Woche";
chartKunden.Series["Kunden"].YValueMembers = "Stunden";
chartKunden.DataSource = dataSetChart;
我基本上只想知道如何将它们分开,以便第二个系列从数据集的第二个 table 获取数据。
更新数据绑定:
chartKunden.Series["Table2"].Points.DataBind(dataSetChart.Tables[1].Rows, "Woche", "Stunden", "");
chartKunden.Series["Table1"].Points.DataBind(dataSetChart.Tables[0].Rows, "Woche", "Stunden", "");
有 many ways 要做数据绑定。
您可以将每个系列绑定到一个单独的数据源,例如:
s1.XValueMember = "col11";
s1.YValueMembers = "col12";
s2.XValueMember = "col21";
s2.YValueMembers = "col22";
s1.Points.DataBind(t1.Rows, "col11", "col12", "");
s2.Points.DataBind(t2.Rows, "col21", "col22", "");
这假设有两个数据表 t1
和 t2
,列为 "col11"
、"col12"
和 "col21"
、"col22"
.
注意空字符串作为最后一个参数。在这里可以添加一个以逗号分隔的自定义属性列表以添加到绑定中。示例:
s1.Points.DataBind(t1.Rows, "col11", "col12", "Tooltip=colcom1");
有关此限制的讨论,请参阅 here!
另请注意,此绑定重载需要在同一数据源中查找 x 值和 y 值。查看上面的绑定概述以获得更灵活的方法!!
将 x 和 y 值绑定到不同来源的简单示例可以写为:
s2.Points.DataBindXY(t2.Rows, "col21", t1.Rows, "col12");
请注意,现在我们无法设置扩展属性!
好的,我想我可以缩小问题的范围,我根据 CheckButton 以 2 种不同的方式绘制图表,通常我先绘制另一个版本,但现在我绘制了错误的版本首先,数据现在可以正确显示。
我以为我在添加新值之前正确清除了图表和数据集,但似乎并非如此,我将进一步研究这个问题。
现在我只是创建了第二个具有相同 ValueMembers 的系列,但它们显示在彼此之上。 DataSet 已正确填充不同的值。
dataAdapter.Fill(dataSetChart);
chartKunden.Series.Add("Kunden");
chartKunden.Series.Add("Table1");
chartKunden.Series["Kunden"].ChartType = SeriesChartType.Line;
chartKunden.Series["Table1"].ChartType = SeriesChartType.Column;
chartKunden.Series["Table1"].XValueMember = "Woche";
chartKunden.Series["Table1"].YValueMembers = "Stunden";
chartKunden.Series["Kunden"].XValueMember = "Woche";
chartKunden.Series["Kunden"].YValueMembers = "Stunden";
chartKunden.DataSource = dataSetChart;
我基本上只想知道如何将它们分开,以便第二个系列从数据集的第二个 table 获取数据。
更新数据绑定:
chartKunden.Series["Table2"].Points.DataBind(dataSetChart.Tables[1].Rows, "Woche", "Stunden", "");
chartKunden.Series["Table1"].Points.DataBind(dataSetChart.Tables[0].Rows, "Woche", "Stunden", "");
有 many ways 要做数据绑定。
您可以将每个系列绑定到一个单独的数据源,例如:
s1.XValueMember = "col11";
s1.YValueMembers = "col12";
s2.XValueMember = "col21";
s2.YValueMembers = "col22";
s1.Points.DataBind(t1.Rows, "col11", "col12", "");
s2.Points.DataBind(t2.Rows, "col21", "col22", "");
这假设有两个数据表 t1
和 t2
,列为 "col11"
、"col12"
和 "col21"
、"col22"
.
注意空字符串作为最后一个参数。在这里可以添加一个以逗号分隔的自定义属性列表以添加到绑定中。示例:
s1.Points.DataBind(t1.Rows, "col11", "col12", "Tooltip=colcom1");
有关此限制的讨论,请参阅 here!
另请注意,此绑定重载需要在同一数据源中查找 x 值和 y 值。查看上面的绑定概述以获得更灵活的方法!!
将 x 和 y 值绑定到不同来源的简单示例可以写为:
s2.Points.DataBindXY(t2.Rows, "col21", t1.Rows, "col12");
请注意,现在我们无法设置扩展属性!