Невозможно изменить интервал метки на графике asp: - PullRequest
0 голосов
/ 13 мая 2011

Особая проблема - та, о которой уже говорили.У меня есть элемент управления asp: chart, и он не показывает все мои метки на оси X.Тот же вопрос, что и: Почему ярлыки исчезают в диаграммах ASP.NET?

Однако ответ (интервал = 1 по оси X) не влияет на мой элемент управления.И, кроме того, мне интересно, есть ли у меня неправильные настройки, потому что многие вещи ничего не делают, когда я пытаюсь их изменить, например, настройка LabelAutoFitStyle не влияет на мою диаграмму.

Здесьмой код:

<asp:Chart ID="SalesChart" Width="500" Height="400" ImageStorageMode="UseHttpHandler" EnableViewState="False" runat="server" ImageType="Png">
        <Series>
            <asp:Series ChartType="Column" Name="StatsSeries" XAxisType="Secondary" ToolTip="#VALX: #VALY{C0}" label="#VALY{C0}" LabelBorderColor="Gray" LabelBackColor="#FFF6AA">
                <Points>
                </Points>
            </asp:Series>
        </Series>
        <ChartAreas>
            <asp:ChartArea Area3DStyle-Enable3D="true" Name="StatsChartArea" Area3DStyle-PointGapDepth="0" Area3DStyle-Rotation="20" Area3DStyle-PointDepth="60" Area3DStyle-Inclination="20">
                <AxisX LabelAutoFitMinFontSize="10" Interval="1">
                    <MajorGrid Interval="1" />
                    <MinorGrid />
                    <LabelStyle Interval="1" />
                </AxisX>
                <AxisY>
                    <LabelStyle Format='{C0}' />
                    <MinorGrid Enabled="True" LineColor="Gray" />
                </AxisY>
            </asp:ChartArea>
        </ChartAreas>
    </asp:Chart>

код позади (я спрятал здесь много кода, который не имеет отношения):

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // Here I get chart data


            //Set everything up
            if (statsDataTable.Rows.Count > 0)
            {
                SetChartData(statsDataTable);
                SetChartGridResolution();
                SetChartBarColors();
            }
        }
    }


    private void SetChartData(DataTable statsDataTable)
    {
        ArrayList xValues = new ArrayList();
        ArrayList yValues = new ArrayList();

        // I populate the lists with values, and then bind it below


        SalesChart.Series[0].Points.DataBindXY(xValues, yValues);
    }

    /// <summary>
    /// Set the intervals on the grid, based on the highest value.
    /// </summary>
    private void SetChartGridResolution()
    {
        if (SalesChart.Series[0].Points.FindMaxByValue().YValues[0] > 2000000)
        {
            SalesChart.ChartAreas[0].AxisY.LabelStyle.Interval = 1000000;
            SalesChart.ChartAreas[0].AxisY.MajorGrid.Interval = 1000000;
            SalesChart.ChartAreas[0].AxisY.MajorTickMark.Interval = 1000000;
            SalesChart.ChartAreas[0].AxisY.MinorGrid.Interval = 500000;

        }
        else if (SalesChart.Series[0].Points.FindMaxByValue().YValues[0] > 1000000)
        {
            SalesChart.ChartAreas[0].AxisY.LabelStyle.Interval = 200000;
            SalesChart.ChartAreas[0].AxisY.MajorGrid.Interval = 200000;
            SalesChart.ChartAreas[0].AxisY.MajorTickMark.Interval = 200000;
            SalesChart.ChartAreas[0].AxisY.MinorGrid.Interval = 100000;
        }
        else
        {
            SalesChart.ChartAreas[0].AxisY.LabelStyle.Interval = 100000;
            SalesChart.ChartAreas[0].AxisY.MajorGrid.Interval = 100000;
            SalesChart.ChartAreas[0].AxisY.MajorTickMark.Interval = 100000;
            SalesChart.ChartAreas[0].AxisY.MinorGrid.Interval = 50000;
        }
    }

    private void SetChartBarColors()
    {
        System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml("#007dc3");
        System.Drawing.Color color2 = System.Drawing.ColorTranslator.FromHtml("#539dc8");

        for (int i = 0; i < SalesChart.Series[0].Points.Count; i++)
        {
            if (i % 2 == 0)
                SalesChart.Series[0].Points[i].Color = color1;
            else
                SalesChart.Series[0].Points[i].Color = color2;
        }
    }

Я был бы рад, если бы вы могли дать мнеключ!

С уважением, Джейкоб

1 Ответ

0 голосов
/ 16 мая 2011

Хорошо, я решил это! Эта проблема стоила мне нескольких часов, пытаясь решить различные проблемы. Я надеюсь, что кто-то может быть избавлен от этого, прочитав это.

Это все из-за XAxisType = "Secondary", когда он выбран (чтобы использовать верхнюю x-линию вместо нижней), все конфигурации на оси x должны быть включены вместо. Это заставляло многое "не работать" для меня ...

...