2017-02-05 3 views
1

Прямо .. Могу ли я спросить, как создать пользовательскую легенду внизу моих диаграмм?Добавить пользовательскую легенду с индикатором цвета ASP.NET Chart

Легенда будет .. Red Низкая кровать Номер

коды в конструкторе:

   <asp:Chart ID="ChartClass" Visible="false" runat="server" Height="500px" Width="720px"> 
       <Series> 
        <asp:Series Name="SeriesAvailableClass" IsValueShownAsLabel="True" LabelAngle="-90" Font="Microsoft Sans Serif, 12pt" Legend="LegendClass" ChartArea="ChartAreaClass" ChartType="Column"> 
         <SmartLabelStyle Enabled="false" /> 
        </asp:Series> 
        <asp:Series Name="SeriesAllotedClass" IsValueShownAsLabel="True" LabelAngle="-90" Font="Microsoft Sans Serif, 12pt" Legend="LegendClass" ChartArea="ChartAreaClass" ChartType="Column"> 
         <SmartLabelStyle Enabled="false"/> 
        </asp:Series> 
       </Series> 
       <ChartAreas> 
        <asp:ChartArea Name="ChartAreaClass"> 
         <AxisX Title="Class"> 
          <MajorGrid Enabled="false" /> 
         </AxisX> 
         <AxisY Title="Number of Beds"> 
          <MajorGrid Enabled="false" /> 
         </AxisY> 
        </asp:ChartArea> 
       </ChartAreas> 
       <Legends> 
        <asp:Legend Docking="Bottom" Name="LegendClass"></asp:Legend> 
       </Legends> 
       <Titles> 
        <asp:Title Name="TitleChart" Font="Microsoft Sans Serif, 15pt, style=Bold" Text="Beds Statistics Summary (Class)" Alignment="TopCenter"></asp:Title> 
       </Titles> 
       </asp:Chart> 

шифры конец:

 Series seriesAvail = ChartClass.Series.Add("SeriesAvailableClass"); 
     seriesAvail.Color = Color.ForestGreen; 
     seriesAvail.LegendText = "Available Number of Beds"; 
     seriesAvail.IsValueShownAsLabel = true; 
     seriesAvail.LabelAngle = 0; 
     seriesAvail.Font = new Font("Microsoft Sans Serif", 8); 
     seriesAvail.SmartLabelStyle.Enabled = false; 


     String[] classArrAvail = { "A1", "B1", "B2", "C1" }; 
     int[] countAvailable = { A1Available, B1Available, B2Available, C1Available }; 

     ChartClass.Series["SeriesAvailableClass"].Points.DataBindXY(classArrAvail, countAvailable); 

     foreach (DataPoint pt in ChartClass.Series["SeriesAvailableClass"].Points) 
     { 
      if (pt.YValues[0] < 10) 
      { 
       pt.Color = Color.Red; 
      } 
      else if (pt.YValues[0] >= 10) 
      { 
       pt.Color = Color.ForestGreen; 
      } 

     } 


     Series seriesAlloted = ChartClass.Series.Add("SeriesAllotedClass"); 
     seriesAlloted.Color = Color.SkyBlue; 
     seriesAlloted.LegendText = "Alloted Number of Beds"; 
     seriesAlloted.IsValueShownAsLabel = true; 
     seriesAlloted.LabelAngle = 0; 
     seriesAlloted.Font = new Font("Microsoft Sans Serif", 8); 
     seriesAlloted.SmartLabelStyle.Enabled = true; 

     String[] classArrAlloted = { "A1", "B1", "B2", "C1" }; 
     int[] countAlloted = { A1Alloted, B1Alloted, B2Alloted, C1Alloted }; 

     ChartClass.Series["SeriesAllotedClass"].Points.DataBindXY(classArrAlloted, countAlloted); 

Изображение:

enter image description here

Я пробовал искать и искать в Интернете. Кажется, не найти надежных источников или решений, которые я ищу.

Большинство решений имеют легенду, добавленную к определенной серии.

Я довольно новыми для MS-диаграммы ...

Цените любую помощь. Спасибо ..

ответ

1

Добавьте следующий код после того, как вы строите свою серию:

LegendItem item1 = new LegendItem(); 
    item1.ImageStyle = LegendImageStyle.Rectangle; 
    item1.Color = Color.Red; 
    item1.BorderColor = Color.Red; 
    item1.Cells.Add(LegendCellType.SeriesSymbol, "", ContentAlignment.MiddleCenter); 
    item1.Cells.Add(LegendCellType.Text, "Low Bed Number", ContentAlignment.MiddleLeft); 
    ChartClass.Legends[0].CustomItems.Add(item1); 

enter image description here

+0

вы так много jstreet! еще не попробовать, но я уверен, что это работает! жаль был занят другими вещами в моем проекте .. большое спасибо! – domster

+0

Не спешите, не торопитесь. – jsanalytics

+0

он работает! Спасибо большое!! – domster

Смежные вопросы