ASP.NET Chart控件从X轴标签上的int值设置月份名称

Che*_*Cat 3 asp.net formatting mschart axis-labels

我想用相应的月份名替换图表X轴上的数字(1,2,3,...).

这是我的实际图表:

实际图表

DataView填充,Series我有"MONTH"列,其中包含从1到12的值.我还必须手动将MinimumMaximum值设置为0和13,否则我将丢失第一列和最后一列,因为它们之间缺少空间第一个X轴列和Y轴的起点以及图表区域的最后一个X轴列末端之间.

<ChartAreas>
    <asp:ChartArea Name="ChartArea1">
        <AxisX IsStartedFromZero="True" Title="Mese"
            TitleFont="Segoe UI, 10pt, style=Bold" IsLabelAutoFit="False" LineColor="Gray"
            Minimum="0" Maximum="13">
            <MajorGrid LineColor="LightGray" />
            <LabelStyle Font="Segoe UI, 9pt" />
        </AxisX>
    </asp:ChartArea>
</ChartAreas>
Run Code Online (Sandbox Code Playgroud)

因此,如果我用月份名称替换int值,我还需要删除Min和Max参数,但我想保留现在的空间.

我尝试了在这里和其他地方建议的一些解决方案,但没有结果.最简单,最有效和最直接的似乎是:

Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MMM";
Run Code Online (Sandbox Code Playgroud)

但它不起作用.相反,我得到"MMM"字符串代替整数值.

是否可以DataBind像在GridView上一样拦截事件,用月份名称替换整数值?

Das*_*ter 7

我认为你必须使用自定义标签.我用这个这个.

背后的代码:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebTest_1
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Chart1.Series[0].Points.AddXY(1, 83);
            Chart1.Series[0].Points.AddXY(2, 63);
            Chart1.Series[0].Points.AddXY(3, 53);
            Chart1.Series[0].Points.AddXY(4, 77);
            Chart1.Series[0].Points.AddXY(5, 46);
            Chart1.Series[0].Points.AddXY(6, 99);
            Chart1.Series[0].Points.AddXY(7, 72);
            Chart1.Series[0].Points.AddXY(8, 39);
            Chart1.Series[0].Points.AddXY(9, 42);
            Chart1.Series[0].Points.AddXY(10, 71);
            Chart1.Series[0].Points.AddXY(11, 58);
            Chart1.Series[0].Points.AddXY(12, 63);

            Chart1.Series[1].Points.AddXY(1 , 46);
            Chart1.Series[1].Points.AddXY(2 , 72);
            Chart1.Series[1].Points.AddXY(3 , 53);
            Chart1.Series[1].Points.AddXY(4 , 39);
            Chart1.Series[1].Points.AddXY(5 , 63);
            Chart1.Series[1].Points.AddXY(6 , 71);
            Chart1.Series[1].Points.AddXY(7 , 75);
            Chart1.Series[1].Points.AddXY(8 , 99);
            Chart1.Series[1].Points.AddXY(9 , 83);
            Chart1.Series[1].Points.AddXY(10, 63);
            Chart1.Series[1].Points.AddXY(11, 58);
            Chart1.Series[1].Points.AddXY(12, 42);
        }

        protected void Chart1_Customize(object sender, EventArgs e)
        {
            foreach (var lbl in Chart1.ChartAreas[0].AxisX.CustomLabels)
            {
                int monthNumber = int.Parse(lbl.Text);
                if (monthNumber >= 1 && monthNumber <= 12)
                    lbl.Text = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(monthNumber);
                else
                    lbl.Text = "";
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

您需要分配Customize事件.