我使用数据集作为我的数据源在 asp.net 中创建图表,iv 设法显示柱形图。我现在坚持如何在图表上显示每一列的值。
有人可以建议我如何做到这一点吗?
我使用数据集作为我的数据源在 asp.net 中创建图表,iv 设法显示柱形图。我现在坚持如何在图表上显示每一列的值。
有人可以建议我如何做到这一点吗?
我假设您使用的是 .net 4 标配的 ASP.NET 图表控件,您可以通过以下代码获得非常基本的图表
<asp:Chart ID="Chart1" runat="server">
<Series>
<asp:Series Name="Series1" ChartType="Pie" Palette="EarthTones" >
<Points>
<asp:DataPoint AxisLabel="Celtics" YValues="17" />
<asp:DataPoint AxisLabel="Lakers" YValues="15" />
<asp:DataPoint AxisLabel="Bulls" YValues="6" />
<asp:DataPoint AxisLabel="Spurs" YValues="4" />
<asp:DataPoint AxisLabel="76ers" YValues="3" />
<asp:DataPoint AxisLabel="Pistons" YValues="3" />
<asp:DataPoint AxisLabel="Warriors" YValues="3" />
</Points>
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1" Area3DStyle-Enable3D="true" />
</ChartAreas>
</asp:Chart>
现在,如果您想以编程方式访问它,您可能需要下载http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-中给出的示例项目lt-asp-chart-runat-quot-server-quot-gt.aspx并浏览示例代码。该项目非常广泛,并详细描述了您需要了解的有关图表的所有信息。如果您卡在特定的逻辑或代码段上,您能否发布,以便我们提供进一步的建议
谢谢。
严格来说..
从后面的代码:(我的系列被称为整体)
series_overal_overall.Label = "#PERCENT{P0}"
这将以百分比显示值
为了显示更多信息,请考虑这个示例。
从这个禁止的数据中,我创建了很多图表,为了简单起见,我将只显示 2
(抱歉,我使用的是 3d 饼图,但一切正常)
a) 我的 aspx 页面..
<asp:Chart ID="chartOverall" runat="server" Height="200px" Width="1000 px">
<BorderSkin SkinStyle="Emboss" />
<Titles>
<asp:Title Text="Laptop" TextStyle="Shadow" Font="Trebuchet MS, 14pt, style=Bold" IsDockedInsideChartArea="false" DockedToChartArea="laptop" ></asp:Title>
<asp:Title Text="Desktop" TextStyle="Shadow" Font="Trebuchet MS, 14pt, style=Bold" IsDockedInsideChartArea="false" DockedToChartArea="desktop" ></asp:Title>
</Titles>
<Legends>
</Legends>
<ChartAreas>
<asp:ChartArea Name="laptop" Area3DStyle-Enable3D="true" > <Position Y="15" Height="65" Width="22" X="1"></Position></asp:ChartArea>
<asp:ChartArea Name="desktop" Area3DStyle-Enable3D="true" > <Position Y="15" Height="65" Width="22" X="34"></Position></asp:ChartArea>
</ChartAreas>
</asp:Chart>
我定义了 2 个标签并告诉他们应该“停靠”到哪个图表区域。我只做一个图例,其余的将从代码隐藏中完成。最后,定义图表区域本身。
在代码隐藏中,我调用我的子程序来创建购物车并传递对表的引用,如上所示,这样我就可以处理我计算到那个时间的那个日期。
Protected Sub createchart(ByRef t As Table)
'create series
Dim series_overal_laptop As New Series("Overalll")
Dim series_overal_desktop As New Series("Overalld")
'create arrays
Dim yvalueslaptop(1) As Integer
Dim yvaluesdesktop(1) As Integer
Dim Xvalues(2) As String
Dim Xvaluesio(1) As String
' fill X values
For i = 1 To 2 ' in/out label.
Xvaluesio(i - 1) = t.Rows(2).Cells(i).Text
Next
至此,准备工作已经完成。现在我们要输入 Y 值。
' fill y values
For i = 1 To 5 Step 2
'laptops IN
YValuesINL(((i + 1) / 2) - 1) = t.Rows(3).Cells(i).Text
'Desktops IN
YValuesIND(((i + 1) / 2) - 1) = t.Rows(4).Cells(i).Text
Next
For i = 2 To 6 Step 2
'laptops out
YValuesOUTL(((i) / 2) - 1) = t.Rows(3).Cells(i).Text
'desktop out
YValuesOUTD(((i) / 2) - 1) = t.Rows(4).Cells(i).Text
Next
我基本上正在阅读 IN 的所有奇数列和 out 值的偶数列。最后一个字母指定它是笔记本电脑 (L) 还是台式机 (D) 值。然后总结这些读取值,因为它们包含我想要显示为保修/保修外百分比的数字。(请注意,我只显示页面的一部分,中间数组正在其他地方使用)
'overall laptops and desktops
'reuse the values i've collected already
yvalueslaptop(0) = YValuesINL.Sum
yvalueslaptop(1) = YValuesOUTL.Sum
yvaluesdesktop(0) = YValuesIND.Sum
yvaluesdesktop(1) = YValuesOUTD.Sum
'now name and place the series, specfiy appearance and point values
'#First Section
series_overal_laptop.Name = "laptop"
series_overal_laptop.ChartArea = "laptop"
series_overal_laptop.ChartType = SeriesChartType.Pie
series_overal_laptop.Label = "#PERCENT{P0}"
series_overal_laptop.IsVisibleInLegend = False
series_overal_desktop.Name = "desktop"
series_overal_desktop.ChartArea = "desktop"
series_overal_desktop.ChartType = SeriesChartType.Pie
series_overal_desktop.Label = "#PERCENT{P0}"
series_overal_desktop.IsVisibleInLegend = True
series_overal_desktop.LegendText = "#AXISLABEL"
'#End of First Section
对于其中一个图表,我要隐藏图例,因为它是相同的两倍,稍后我会将图例放在两个图表的中间。
' now bind the datapoints to the series
series_overal_laptop.Points.DataBindXY(Xvaluesio, yvalueslaptop)
series_overal_desktop.Points.DataBindXY(Xvaluesio, yvaluesdesktop)
'finally add the series to the charts
chartOverall.Series.Dispose() ' just to be sure nothing is left behind
chartoverall.series.add(series_overal_laptop)
chartOverall.Series.Add(series_overal_desktop)
chartOverall.Series("laptop").Palette = ChartColorPalette.Excel
chartOverall.Series("desktop").Palette = ChartColorPalette.Excel
在这里我添加我的传奇。
'only 1 legend per chart is fine as they all have the same colors
Dim topviewlegend As New Legend("topviewlegend")
chartOverall.Legends.Add(topviewlegend)
chartOverall.Series("desktop").Legend = "topviewlegend"
topviewlegend.IsDockedInsideChartArea = False
topviewlegend.Docking = 0
topviewlegend.Position.Auto = False
topviewlegend.Position.X = 20
topviewlegend.Position.Y = 13
topviewlegend.Position.Width = 20
topviewlegend.Position.Height = 10
当然,您需要对这些值进行一些操作以将其正确定位在您的图表区域
如果您想查看值而不是百分比,请将您的标签更改为。
series_overal_laptop.Label = "#VALY"
希望这可以帮助
ķ
Chart1.Series[0].IsValueShownAsLabel = true;