2010-08-31 53 views
0

回發後圖表控件的值正在更改其設計時間值。即使我在(!isPostBack)作用域中編寫頁面加載操作,這些值也會重置。 所以我定義了一個「我的系列」靜態ArrayList,並在運行時將每個圖表系列添加到該ArrayList。在頁面加載事件中,我將ArrayList的每個元素添加到圖表Chart1.Series.Add(myseries [i] as Series)方法。但它失敗了。 「未設置對象實例的對象引用」錯誤發生。這是我的代碼。我在哪裏錯了?添加系列圖表控制在運行時asp.net(因爲回發問題)

public partial class _Default : System.Web.UI.Page 
{ 
    static ArrayList my_series = new ArrayList(); 

    void Fill_Chart(); 
    { 
     .... 
     foreach (Series item in Chart1.Series) 
     { 
      my_series.Add(item); 
     } 
    } 

    protected void Page_Load(object sender, EvetnArgs e) 
    { 
     ... 
     Chart1.Series.Clear(); 
     for (int i=0;i < my_series.Count;i++) 
     { 
     Chart1.Series.Add(my_series[i] as Series) 
     } 
    } 

我檢查了這個步驟與調試。在通過F10線後錯誤沒有發生。但是當我在頁面加載事件中傳遞了最後一個}符號時,會發生此錯誤。任何想法?

回答

0

爲什麼my_series是靜態的?你可以這樣使用:

public partial class _Default : System.Web.UI.Page 
{ 
    private ArrayList mySeries; 
    public ArrayList MySeries 
    { 
     get 
     { 
      if (mySeries == default(ArrayList)) 
       mySeries = new ArrayList(); 
      return mySeries; 
     } 
    } 

    void Fill_Chart() 
    { 
     foreach (Series item in Chart1.Series) 
     { 
      MySeries.Add(item); 
     } 
    } 

    protected void Page_Load(object sender, EvetnArgs e) 
    { 
     ... 
     Chart1.Series.Clear(); 
     Fill_Chart(); 
     for (int i=0;i < MySeries.Count;i++) 
     { 
     Chart1.Series.Add(MySeries[i] as Series) 
     } 
    } 
} 
+0

我使用了靜態ArrayList。因爲我想在回發之前獲得持有圖​​表值。如果它不是靜態的,myseries會重置每個回發。我做了你所說的。 NullException錯誤消失。但它對我沒有用處。我不想在PageLoad中使用Fill_Chart方法。因爲數據庫花費了大量時間,所以該方法做了很多工作。我不想每次回發都運行該方法。我希望我的系列在postback和NullException錯誤消失後不會重置。 – bselvan 2010-08-31 15:01:52

+0

並通過此代碼MySeries繼續對每個postback進行重置。將私有mySeries更改爲私有靜態mySeries.NullException錯誤恢復。 – bselvan 2010-08-31 15:09:44