Особая проблема - та, о которой уже говорили.У меня есть элемент управления 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;
}
}
Я был бы рад, если бы вы могли дать мнеключ!
С уважением, Джейкоб