Как отобразить значения в элементе управления диаграммой ASP.NET - PullRequest
2 голосов
/ 20 июня 2011

Я использую набор данных в качестве источника данных для создания диаграммы в asp.net, iv мне удалось отобразить столбчатую диаграмму.Теперь я застрял в том, как я могу отобразить значения каждого столбца на графике.

Может кто-нибудь подсказать, как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 20 июня 2011

Я предполагаю, что вы используете элементы управления диаграммами ASP.NET, которые входят в стандартную комплектацию .net 4, самая простая диаграмма, которую вы можете получить, приведена ниже кода

<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, и просмотреть пример кода. Проект довольно обширный и подробно описывает все, что вам нужно знать о графиках. Если вы застряли на определенной логике или фрагменте кода, не могли бы вы опубликовать это, чтобы мы могли посоветовать дальше

Спасибо.

3 голосов
/ 21 июня 2011

Строго говоря ..

Из кода: (моя серия называется в целом)

   series_overal_overall.Label = "#PERCENT{P0}"

Это покажет значения в процентах


Чтобы показать немного больше, рассмотрите этот пример.

enter image description here

Из этих запрещенных данных я создаю множество графиков, чтобы упростить их, я просто покажу 2

enter image description here

(извините, я использую 3d круговые диаграммы, но все идет)

а) моя страница 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 метки и говорю чартерии, что они должны быть «пристыкованы». Я делаю только одну легенду, так как все остальное будет сделано из кода. Наконец, определите сами хартии.

В codebehind я звоню своему сабвуферу, чтобы создать тележки и передать ссылку на таблицу, как показано выше, чтобы я мог обработать ту дату, которую я рассчитал для этого времени.

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 и четные столбцы для выходных значений. Последняя буква указывает, является ли это значением для ноутбука (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"

надеюсь, это поможет

K

1 голос
/ 11 июля 2013
Chart1.Series[0].IsValueShownAsLabel = true;
...