I have a bar chart that has a single series of labels that come from a data source. Some of the labels are too long, and I am trying to wrap the text, as shown in this demo:
http://docs.telerik.com/devtools/aspnet-ajax/controls/htmlchart/functionality/multiline-labels
I was able to get the demo to work by just inserting the markup, but when I try to make text wrap in my own code, I get a javascript error. (Unterminated string constant)
I have simplified my code to give an example of what is happening. Here is the markup:
<
telerik:RadHtmlChart
ID
=
"barChart"
Transitions
=
"true"
Skin
=
"Silk"
Height
=
"500"
runat
=
"server"
>
<
ChartTitle
>
<
Appearance
>
<
TextStyle
Bold
=
"true"
FontSize
=
"14"
/>
</
Appearance
>
</
ChartTitle
>
<
Legend
>
<
Appearance
Position
=
"Bottom"
Visible
=
"false"
></
Appearance
>
</
Legend
>
<
PlotArea
>
<
XAxis
>
<
TitleAppearance
>
<
TextStyle
Bold
=
"true"
FontSize
=
"12"
/>
</
TitleAppearance
>
<
LabelsAppearance
Visible
=
"true"
>
<
TextStyle
Bold
=
"true"
FontSize
=
"10"
/>
</
LabelsAppearance
>
<
MajorGridLines
Visible
=
"false"
/>
<
MinorGridLines
Visible
=
"false"
/>
</
XAxis
>
<
YAxis
MajorTickType
=
"None"
>
<
TitleAppearance
>
<
TextStyle
Bold
=
"true"
FontSize
=
"12"
/>
</
TitleAppearance
>
<
LabelsAppearance
>
<
TextStyle
Bold
=
"true"
FontSize
=
"10"
/>
</
LabelsAppearance
>
<
MajorGridLines
Visible
=
"true"
/>
<
MinorGridLines
Visible
=
"false"
/>
</
YAxis
>
</
PlotArea
>
</
telerik:RadHtmlChart
>
Here is the relevant code on the server. I have seen posts from 2013 that said this is not possible, but the 2014 demo implies that you have resolved he issue:
public void CreateChart(ChartEventArgs args)
{
barChart.PlotArea.Series.Clear();
//var ds = _presenter.GenerateChart(args);
barChart.PlotArea.XAxis.Name = "Workflow Step";
barChart.PlotArea.XAxis.DataLabelsField = "WorkflowStep";
AddChartSeries("WorkflowStep", "AvgDaysToCSR", "{0:N2}", Color.FromArgb(245, 234, 105));
var average = new List<
ChartRequestTypeResult
>();
// Works, but doesn't wrap
//average.Add(new ChartRequestTypeResult { WorkflowStepID = 1, WorkflowStep = "Test Wrap One", AvgDaysToCSR = 1.0 });
//average.Add(new ChartRequestTypeResult { WorkflowStepID = 2, WorkflowStep = "Test Wrap Two", AvgDaysToCSR = 2.0 });
//average.Add(new ChartRequestTypeResult { WorkflowStepID = 3, WorkflowStep = "Test Wrap Three", AvgDaysToCSR = 3.0 });
// Gives error
average.Add(new ChartRequestTypeResult { WorkflowStepID = 1, WorkflowStep = "Test\nWrap\nOne", AvgDaysToCSR = 1.0 });
average.Add(new ChartRequestTypeResult { WorkflowStepID = 2, WorkflowStep = "Test\nWrap\nTwo", AvgDaysToCSR = 2.0 });
average.Add(new ChartRequestTypeResult { WorkflowStepID = 3, WorkflowStep = "Test\nWrap\nThree", AvgDaysToCSR = 3.0 });
barChart.DataSource = average;
barChart.DataBind();
BackgroundColor = Color.FromArgb(208, 212, 204);
}
public void AddChartSeries(string name, string seriesValue, string format, Color color)
{
ColumnSeries cs = new ColumnSeries();
cs.Name = name;
cs.Stacked = false;
cs.Spacing = 0.0;
cs.Gap = 0.2;
cs.DataFieldY = seriesValue;
cs.Appearance.Overlay.Gradient = Gradients.Glass;
cs.Appearance.FillStyle.BackgroundColor = color;
cs.LabelsAppearance.DataFormatString = format;
cs.TooltipsAppearance.DataFormatString = format;
if ((color.R * 2) + (color.G * 3) + color.B < 600)
cs.TooltipsAppearance.Color = Color.FromKnownColor(KnownColor.White);
barChart.PlotArea.Series.Add(cs);
}