为每个Y值ASP.NET / C#添加图例标签

时间:2014-07-18 13:25:35

标签: c# asp.net charts code-behind

我正在使用C#代码隐藏文件制作饼图。这是我用来为图表提供数据的代码:

Graph.Series["Data"].Points.AddXY(appointments.LocCode, appointments.OnTime, appointments.Late, appointments.Missed);

OnTime,Late和Missed都只是一个整体,我真的只想要一个饼图,其中整体是所有这些的总和。我的问题是,Legend正在显示数据点的y值,我需要它来显示它所代表的类别(On Time,Missed或Late)。

我已经使用系列标签来显示价值和百分比,因此这不是一个真正的选项,它必须在图例中。此外,此图表需要根据用户在页面上选择的控件进行动态填充,因此我不认为我可以使用设计器或aspx代码执行任何操作。

我是否应该采用另一种方式绑定更容易实现此目的的数据?我是ASP.NET/Charts的新手,所以这一切都是一次学习经历。

我已经看到了这个:

chart1.Series["Series1"].Points[0].Label = "My Point Label\nLabel Line #2";

但是我不确定这是否适用于这种情况,如果确实如此,如何区分哪个点在索引0,1,2等中我确实尝试了这个代码但是我收到了错误&# 34;索引超出范围",我不确定这是因为我使用的测试数据没有错过约会,或者是否是我的数据绑定。当我只使用索引位置0时,它改变了我的百分比和y值标签,这种方法失败了,现在我看了代码,我注意到我用这个改变了系列标签而不是传奇标签。

那么,我怎样才能将传奇标签分配到" On Time"是约会。在时间,"晚"是为约会。日期和"错过"是约会。很好吗?我再次打开更改数据绑定,我只需要将其作为最终结果。任何建议或见解都会在这一点上受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

做了一些改变,我得到了我正在寻找的行为。如果其他人在将来看到这一点,并想知道我做了什么:

我最终改变了我的对象数据源。而不是使用:

public int OnTime { get; set; }
public int Late { get; set; }
public int Missed { get; set; }
public String LocCode { get; set; }

我刚刚使用过:

public String LocCode { get; set; }
public String TimeDesc { get; set; }
public int TimeAmt { get; set; }

我将这些数据绑定到饼图上:

Graph.DataSource = AData; //where AData is a List of the class I described above
Graph.Series["Data"].XValueMember = "TimeDesc";
Graph.Series["Data"].YValueMembers = "TimeAmt";

我的标签看起来像这样:

Graph.Series["Data"].Label = "#PERCENT\n#VALY";
Graph.Series["Data"].LegendText = "#VALX";