я хотел отформатировать значения внутри круговой диаграммы, я использую элемент управления диаграммой asp.net.
значения поступают из базы данных и отображаются так: «12345678», но я хочу показать их так: «12 345 678».
я уже пробовал это
ChartAb.Series[0].Label = "#VALY{#,###}";
он преобразует значения в «12 345 678», но также изменяет легенду диаграммы, где метки заменяются такими значениями, как Куплено заменяется на «12 345 234». а остальное заменяется на "32 123"
так что для меня это бесполезно. как я могу получить формат запятой без изменения меток.
я также пытался отформатировать значение в запросе sql, он показывает результаты, как я хотел, на сервере sql, но не показывает этот формат в диаграмме.
вот мой код страницы cs
protected void Budget_Issuance_HandsetChart_Pie()
{
// Convert.ToDecimal(number).ToString("#,##0.00");
Budget_Issuance_Handset_Chart_Pie.Visible = true;
string query = string.Format("select b.issuanceType, Format(SUM(b.budgetAmount), '##,##0') as Budget from tblbudget b inner join tblContract c on b.contractID=c.contractID where b.budgetType='Handset' " + queryVal+" group by b.issuanceType");
DataTable dt = GetData(query);
Budget_Issuance_Handset_Chart_Pie.DataSource = dt;
foreach (Series series in Budget_Issuance_Handset_Chart_Pie.Series)
{
series.ChartType = SeriesChartType.Pie;
}
// Chart1.Series[0].ChartType = (SeriesChartType)int.Parse("10");
Budget_Issuance_Handset_Chart_Pie.Legends[0].Enabled = true;
Budget_Issuance_Handset_Chart_Pie.Series[0].XValueMember = "issuanceType";
Budget_Issuance_Handset_Chart_Pie.Series[0].YValueMembers = "Budget";
Budget_Issuance_Handset_Chart_Pie.Series[0].IsValueShownAsLabel = true;
Budget_Issuance_Handset_Chart_Pie.Series[0].Label = "#VALY{#,###}";
Budget_Issuance_Handset_Chart_Pie.DataBind();
// UtilisedBudget(null,EventArgs.Empty);
}
и вот код страницы aspx
<asp:Chart ID = "Budget_Issuance_Handset_Chart_Pie" runat = "server" Height = "400px" Width = "500px" Visible = "false">
<Titles>
<asp:Title ShadowOffset = "3" Name = "Items" />
</Titles>
<Legends>
<asp:Legend Alignment = "Center" Docking = "Bottom" IsTextAutoFit = "False" Name = "Default"
LegendStyle = "Row" />
</Legends>
<Series>
<asp:Series Name = "Default" />
</Series>
<ChartAreas>
<asp:ChartArea Name = "ChartAreaHandsetIssuance" BorderWidth = "0" />
</ChartAreas>
</asp:Chart>
Спасибо
См. образцы msdn. Есть много очень хороших примеров: code.msdn.microsoft.com/Samples-Environments-for-b01e9c61
Вы также должны изменить формат легенды, если хотите, чтобы он отличался от метки. Вы делаете это с LegendText
.
Пример:
ChartAb.Series[0].LegendText = "#AXISLABEL";
Как написано в документации Microsoft https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.datavisualization.charting.legend
If you have a pie chart and you set the Label property, it will also set the legend text to the value you set for the labels. If you want to set the text to a different value, you can set the LegendText property. In most cases, you would want to set the LegendText property to "#AXISLABEL" or "#VALX".
Только глядя на код, я бы попробовал изменить
.IsValueShownAsLabel = true;
наIsValueShownAsLabel = false;
или это полностью удалит метку?