why LabelAppearance Dimensions doesn't work

Thread is closed for posting
2 posts, 0 answers
  1. Vladislav Yuzhaninov
    Vladislav Yuzhaninov avatar
    2 posts
    Member since:
    Jun 2010

    Posted 23 Sep 2010 Link to this post

    aspx code

           <asp:Panel ID="TrendPanel" runat="server" Enabled="True">
               <telerik:radchart ID = "RadChart1" runat="server" Height = "780px" Width = "950px" Skin="Vista" >
                 <Appearance Corners="Round, Round, Round, Round, 7">
                     <FillStyle FillType="ComplexGradient">
                         <FillSettings>
                             <ComplexGradient>
                                 <telerik:GradientElement Color="243, 253, 255" />
                                 <telerik:GradientElement Color="White" Position="0.5" />
                                 <telerik:GradientElement Color="243, 253, 255" Position="1" />
                             </ComplexGradient>
                         </FillSettings>
                     </FillStyle>
                     <Border Color="212, 221, 222" />
                 </Appearance>
    </telerik:radchart>

    c# code

    private void UpdateRadChart(wchart wc)
      {
      
          string d1 = wc.d1.ToString("yyyy/MM/dd").Replace(".", "/");
          string d2 = wc.d2.ToString("yyyy/MM/dd").Replace(".", "/");
      
          TrendPanel.Visible = true;
          RadChart1.Visible = true;
      
          RadChart1.Series.Clear();
      
      
          RadChart1.Series.ClearItems();
      
          RadChart1.PlotArea.XAxis.Items.Clear();
          RadChart1.PlotArea.YAxis.Items.Clear();
          RadChart1.PlotArea.YAxis.ScaleBreaks.Segments.Clear();
      
      
      
          RadChart1.PlotArea.YAxis.ScaleBreaks.Enabled = false;
          RadChart1.PlotArea.YAxis.AutoScale = true;
          RadChart1.PlotArea.XAxis.AutoScale = true;
      
      
          RadChart1.PlotArea.YAxis.Appearance.LabelAppearance.Visible = true;
          RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.Dimensions.AutoSize = false;
      
          RadChart1.AutoLayout = false;
          RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.Dimensions.Height = Telerik.Charting.Styles.Unit.Pixel(15);
          RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.Dimensions.Width = Telerik.Charting.Styles.Unit.Pixel(150);
          RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.Position.AlignedPosition = AlignedPositions.Top;
            
            
          string type = wc.type;
            
      
          string sqlString = null;
          SqlConnection Conn = GetSqlConnection();
      
          if (type == "oil")
          {
              if (wc.well == 0) return;    
              sqlString = @"exec dbo.rwell " + "'" + d1 + "', '" + d2 + "', " + wc.well + ", 0";
      
              SqlDataAdapter adapter = new SqlDataAdapter(sqlString, Conn);
              DataSet ds = new DataSet();
              adapter.Fill(ds);
              ChartSeries currentSeries = null;
              currentSeries = RadChart1.CreateSeries("нефть, м3", Color.Empty, Color.Empty, ChartSeriesType.SplineArea);
              currentSeries.Appearance.Border.Color = Color.Black;
              currentSeries.Appearance.ShowLabels = false;
              currentSeries.Appearance.FillStyle.MainColor = Color.SaddleBrown;
              currentSeries.Appearance.FillStyle.SecondColor = Color.Black;
      
      
              RadChart1.ChartTitle.TextBlock.Text = "Тренд по результатам промежуточных замеров по скважине №" + wc.well.ToString();
              ChartAxisItem xAxis = new ChartAxisItem();
              RadChart1.PlotArea.XAxis.IsZeroBased = false;
              RadChart1.PlotArea.XAxis.AutoScale = false;
              RadChart1.PlotArea.XAxis.Appearance.CustomFormat = "dd.MM HH:mm";
              //RadChart1.PlotArea.XAxis.Appearance.MajorTick.Width = 90;
              RadChart1.PlotArea.XAxis.Appearance.ValueFormat = Telerik.Charting.Styles.ChartValueFormat.ShortTime;
              RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.RotationAngle = 90;
              RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.Position.AlignedPosition = Telerik.Charting.Styles.AlignedPositions.Top;
      
              foreach (DataRow dbRow in ds.Tables[0].Rows)
              {
      
                  DateTime scDate = new DateTime();
                  scDate = Convert.ToDateTime(dbRow["e"]);
                  ChartAxisItem item = new ChartAxisItem();
                  item.Value = (decimal)scDate.ToOADate();
                  RadChart1.PlotArea.XAxis.AddItem(item);
      
                  if (currentSeries != null)
                  {
                      currentSeries.AddItem((double)dbRow["o"]);
                  }
                    
              }
      
              Conn.Close();
      
          }
          else if (type == "padu")
          {
              sqlString = @"exec dbo.cpadu " + "'" + d1 + "', '" + d2 + "', " + wc.bush + ", 0";
      
              SqlDataAdapter adapter = new SqlDataAdapter(sqlString, Conn);
              DataSet ds = new DataSet();
              adapter.Fill(ds);
      
              RadChart1.ChartTitle.TextBlock.Text = "Состояние ПАДУ по скважинам куста №" + wc.bush.ToString();
              ChartAxisItem xAxis = new ChartAxisItem();
                
              RadChart1.PlotArea.XAxis.IsZeroBased = false;
              RadChart1.PlotArea.XAxis.AutoScale = false;
              RadChart1.PlotArea.XAxis.Appearance.CustomFormat = "dd.MM HH:mm";
              RadChart1.PlotArea.XAxis.Appearance.ValueFormat = Telerik.Charting.Styles.ChartValueFormat.ShortTime;
              RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.RotationAngle = 90;
              RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.Position.AlignedPosition = Telerik.Charting.Styles.AlignedPositions.Top;
                
      
              int w = 0;
              int v = 0;
              ChartSeries currentSeries = null;
      
                
              RadChart1.PlotArea.YAxis.Appearance.LabelAppearance.Visible = false;
              RadChart1.PlotArea.YAxis.AutoScale = false; // это нужно чтобы вручную установить шкалу
      
      
              ChartAxisItem itemlast = null;
              int maxr = 0;
      
              foreach (DataRow dbRow in ds.Tables[0].Rows)
              {
      
                  w = Convert.ToInt32(dbRow["w"]);
                  v = Convert.ToInt32(dbRow["v"]);
                  if (maxr < Convert.ToInt32(dbRow["r"]))
                      maxr = Convert.ToInt32(dbRow["r"]);
                  DateTime scDate = new DateTime();
                  scDate = Convert.ToDateTime(dbRow["t"]);
                  ChartAxisItem item = new ChartAxisItem();
                  item.Value = (decimal)scDate.ToOADate();
      
                  if (itemlast == null)
                      RadChart1.PlotArea.XAxis.AddItem(item);
                  else if (itemlast.Value != item.Value)
                     RadChart1.PlotArea.XAxis.AddItem(item);
      
      
                  ChartSeriesItem itm = new ChartSeriesItem();
                  itm.XValue = scDate.ToOADate();
      
      
                  currentSeries = RadChart1.GetSeries(w.ToString()); // пытаемся найти серию по скважине, если не нашлась - создаем новую
                  if (currentSeries == null)
                  {
                      currentSeries = RadChart1.CreateSeries(w.ToString(), Color.Empty, Color.Empty, ChartSeriesType.Line);
                      currentSeries.Appearance.LineSeriesAppearance.Width = 3;
      
      
                  }
                  ChartSeriesItem im = null; // фиктивная точка для рисования лесенок
                  if (currentSeries != null)
                  {
                      if (v > 0)
                      {
                          if (v < 2) // для граничной фиктивной точки 0 устанавливать не нужно, если ПАДУ для скважины до этого была в работе
                          {
                              im = new ChartSeriesItem();
                              im.XValue = scDate.ToOADate();
                              im.YValue = 0;
                              currentSeries.Items.Add(im);
                          }
                          itm.YValue = double.Parse(dbRow["r"].ToString());
                      }
                      else
                      {
                          if (v == 0)
                          {
                              im = new ChartSeriesItem();
                              im.XValue = scDate.ToOADate();
                              im.YValue = double.Parse(dbRow["r"].ToString());
                              currentSeries.Items.Add(im);
                          }
                          itm.YValue = 0;
                      }
      
      
                      currentSeries.Items.Add(itm);
      
                      currentSeries.DefaultLabelValue = String.Empty;
      
      
                  }
      
      
                  itemlast = item;
      
              }
      
              RadChart1.PlotArea.YAxis.AddRange(0, maxr, 1); 
        
              Conn.Close();
      
          }

    And this is result into attach.

    Why this code doesn't work for my case? Why time stamps are cut?
    RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.Dimensions.Height = Telerik.Charting.Styles.Unit.Pixel(15); 
    RadChart1.PlotArea.XAxis.Appearance.LabelAppearance.Dimensions.Width = Telerik.Charting.Styles.Unit.Pixel(150); 

  2. Evgenia
    Admin
    Evgenia avatar
    1437 posts

    Posted 24 Sep 2010 Link to this post

    Hi Anton,

    Time stamps in your chart aren't cut. You just can't fully see them because of low percentage of bottom margin of your Plot Area. These margins have some default values but you can set greater margin values to provide extra space for positioning legends, labels, title and so on.
    Here is how you can increase your bottom margin value in .aspx (the one with 16%):

    <PlotArea>
    <Appearance Dimensions-Margins="18%, 24%, 12%, 16%">

    Alternatively, you can set the RadChart1.AutoLayout property to true and let RadChart calculate the margins, so all the elements are visible as shown here.

    Regards,
    Evgenia
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Back to Top