【问题标题】:Multiple Series from DataSet数据集中的多个系列
【发布时间】:2019-09-24 13:19:09
【问题描述】:

我有一个比较简单的问题,我想在一个包含 2 个表格的 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;

我基本上只是想知道如何将它们分开,以便第二个系列从 DataSet 的第二个表中获取数据。

更新数据绑定:

chartKunden.Series["Table2"].Points.DataBind(dataSetChart.Tables[1].Rows, "Woche", "Stunden", "");

chartKunden.Series["Table1"].Points.DataBind(dataSetChart.Tables[0].Rows, "Woche", "Stunden", "");

【问题讨论】:

  • 请给我们看代码。向我们展示您访问“DataSet 的第二个表”的尝试。所以看来这里真正的问题是:如何访问第二个表中的数据?
  • 我更新了问题,但遗憾的是没有什么可看的:(
  • 哎呀,错字:chartKunden.Series["Kunden"].Points.DataSource = dataSetChart.Tables[someTable1];
  • 嗯,对不起,你是对的。有many ways to do databinding。这里使用yourSeries1.Points.DataBind(yourSource, "xvaluename", "yvaluename", "");)。注意空字符串! (这里可以绑定一个自定义属性;通常不起作用..)另见here
  • 很抱歉给你三个提示,其中有错误。不过,下面的答案已经过测试.. ;-)

标签: c# .net mschart


【解决方案1】:

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", "");

这假设有两个 DataTables t1t2,列 "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");

请注意,现在我们无法设置扩展属性!

【讨论】:

  • 所以我终于有机会测试您的解决方案,但我似乎对系列具有不同长度的事实感到困惑。看起来较短的系列只需要较长的系列的价值。是否可以选择告诉较短的系列不要这样做?
  • 较短的系列只取较长的系列的价值我不确定我是否理解,但这确实不可能发生。可以多发一些吗,比如截图? x 值是什么类型的? (wochen)?数字?
  • 我添加了一张截图,你可以看到两条不同深浅的绿色线相互叠加。现在奇怪的是,一个表包含 3 行,而另一个只包含 2 行,但它们都在图表中显示 3 个数据点。两个值都是数字,xValue 是整数,yValue 允许逗号
  • 嗯,这看起来很像两个系列都绑定到相同的数据。请务必使用调试器来测试表格的数量和内容。另外:您似乎已经更改了一个系列的名称,对吧?通过名称而不是索引来引用元素通常更清楚..
  • 这个效果好像是不可能的,所以应该是哪里有错别字。我会尝试更改一些数据以查看效果如何!
【解决方案2】:

Okay 我想我可以缩小问题的范围,我根据 CheckButton 以 2 种不同的方式绘制图表,通常我先绘制另一个版本,但现在我先绘制有错误的版本和数据现在可以正确显示。 我以为我在添加新值之前正确清除了图表和数据集,但似乎并非如此,我将进一步研究。

【讨论】:

  • 不确定这是否应该是一个答案。这些点将始终显示表格的内容,但除非您清除表格行,否则它们将保留以前的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多