原来用静态变量,但是程序运行出问题了。考虑用viewstate,但是按照msdn上的例子试了不行。问题很急,请高手回答.谢谢!

解决方案 »

  1.   

    private void Page_Load(object sender, System.EventArgs e)
    {
                if(!Page.IsPostBack)
                {
                   ds=GetDataSet(sql);
                   this.DataGrid1.DataSource=ds;
                   this.DataGrid1.DataBind();
                }            
    }private DataSet ds
    {
                get
                {
                    if(ViewState["ds"]!=null)
                    {
                        return (DataSet)ViewState["ds"];
                    }
                    else
                    {
                        return null;
                    }
                }
                set
                {
                    ViewState["ds"]=value;
                }
    }
      

  2.   

    把DataSet存入ViewState:
    DataSet ds;
    ViewState["ds"]=ds;读取ViewState中的DataSet
    DataSet ds1;
    ds1=(DataSet)ViewState["ds"];
      

  3.   

    放入viewstate代价是很大的,就是每次先把dataset放到web里,然后触发服务的时候再传回来,跟session比起来效率低很多,如果网速有限的话影响地更严重,所以建议楼主慎重考虑,一般都是放进session的
      

  4.   

    但放到Session里比较占服务器的资源
      

  5.   

    那样子的话,楼主是不是应该考虑一下每次重新生成一个DataSet呢?
    我以前也曾将DataSet放到ViewState里面取,结果页面的大小总是几十K, 非常不爽