在运行时asp.net中添加系列到图表控件(因为回发问题)

时间:2010-08-31 12:35:51

标签: asp.net runtime postback charts

在回发后,图表控件的值正在更改其设计时间值。 即使我在(!isPostBack)范围内写入页面加载操作,值也会重置。 所以我定义了一个“我的系列”静态ArrayList,并在运行时我将每个系列的图表添加到该ArrayList。在页面加载事件中,我使用Chart1.Series.Add(myseries [i] as Series)方法将ArrayList的每个元素添加到Chart中。但它失败了。 “对象引用未设置为对象的实例”发生错误。这是我的代码。我哪里错了?

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)
      }
   }

我用debug检查了这个步骤。在使用F10传递线路后没有发生错误。但是,当我在页面加载事件中传递最后一个}符号时,会发生此错误。任何想法?

1 个答案:

答案 0 :(得分: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)
      }
   }
}