2013-03-03 2 views
2

MScharts 컨트롤에 여러 계열의 설정이 있습니다. 이 방법을 사용하면 두 항목을 전환하고 싶습니다. 처음으로이 메서드를 호출하면 모든 것이 좋으며 시리즈가 올바르게 표시됩니다. 두 번째 및 매회 후 메서드 호출을 수행하면 컨트롤에 그려지는 적색 십자가가 표시됩니다. 예외는 발생하지 않습니다. 내가 마지막 줄을 주석 경우mscharts가 적 크로스로 Xaxis 최대 결과를 설정했습니다.

private void EnableChart(Series series) 
    { 
     if (series != null) 
     { 
      chart1.Series.Clear(); 
      chart1.Series.Add(series); 
      double maxval = series.Points.FindMaxByValue("X").XValue; 
      chart1.DataSource = series; 
      chart1.ChartAreas[0].AxisX.Title = series.Name; 
      chart1.DataBind(); 
      chart1.ChartAreas[0].AxisX.Maximum = maxval; //if commented out = ok 
     } 
    } 

은 차트가 표시되지만 이전 시리즈의 X 축 값으로, 그래서 나는 모든 데이터를 볼 수 없습니다.

편집 : 해결.

은 내가

chart1.ChartAreas[0].RecalculateAxesScale(); 

대신

chart1.ChartAreas[0].AxisX.Maximum = maxval; 

모든 작품의를 사용하는 경우.

+1

당신은 당신 자신의 질문에 답하고 그것을 표시 할 수 있습니다. – Drake

답변

0

RecalculateAxesScale()하면 문제가 해결이 줄 이유는

chart1.ChartAreas[0].RecalculateAxesScale(); 

그래서 더 좋은 방법 :

chart1.DataBind(); 

바인드 그래프 데이터 당신은 당신이 축을 다시 계산해야 바인딩 후 점을 추가하는 경우 그것을 해결하기 위해 :

private void EnableChart(Series series) 
    { 
     if (series != null) 
     { 
      chart1.Series.Clear(); 
      chart1.Series.Add(series); 
      double maxval = series.Points.FindMaxByValue("X").XValue; 
      chart1.DataSource = series; 
      chart1.ChartAreas[0].AxisX.Title = series.Name; 

      //switch latest lines and you haven't to recalculate axes 
      chart1.ChartAreas[0].AxisX.Maximum = maxval; 
      chart1.DataBind(); 
     } 
    }