定义了一个全局的DataSet DS1,然后在函数fn1()中检索数据库并把结果赋给DS1,但当我在另外一个函数fn2()中调用这个DS1是总是提示说“引用没有设置到对象”

解决方案 »

  1.   

    写一个公用函数,传一条SQL进去,返回一个DataSet对象
      

  2.   

    在每次postback后.确定在fn2前面都运行了fn1
      

  3.   

    ds不要放在内存里面,还是重新检索再调用比较好。你的情况测试一下是否刷新以后造成ds没有了
      

  4.   

    cpp2017(幕白兄) 可不可以讲得详细点。我可以确定fn1在fn2前运行了,而且DS1中是有结果的。
      

  5.   

    DS1 你是放在fn1()中的,在fn1()可以访问
    在fn2()中调用这个DS1是出错。是因为在fun2()中访问不到ds1.
    除非你把ds1也做成全局的。或者作一个函数返回值的形式.
      

  6.   

    作为类成员的DS1,在页面Response之后,随着Page对象都销毁了~~fn2 如果在一个请求过程中是可以访问到的。如果在请求之后,fn2 就无法访问了。重新查一边,要不就保存到Session里(建议不要把大数据量保存到Session里)
      

  7.   

    jackljane(jack)
    我的DS1就是全局的啊
      

  8.   

    fn1()
    {
      Dataset ds1 = ...
      Session["data"] = ds1;
    }
    fn2()
    {
       if( Session["data"] != null )
       {
            DataSet ds1 = (DataSet)Session["data"]
       }
    }
      

  9.   

    在is not postback 之外给dataset赋值,即每次page_load你的全局ds都能被保证不为null,否则的话肯定不行,刷新之后ds就被初始化了
      

  10.   

    cpp2017(幕白兄) 可不可以讲得详细点。我可以确定fn1在fn2前运行了,而且DS1中是有结果的。
    ===========================
    如果先执行fn1 然后点个按纽再运行fn2,这样不算做fn1在fn2前运行.
      

  11.   

    是啊,应该在同一个事件中确保在fn2前面都运行了fn1
      

  12.   

    是啊,应该在同一个事件中确保在fn2前面都运行了fn1
    ======
    可能的原因不一定是ds为null可能是其他对象为null?
      

  13.   

    现在用Session可以了,不过如果我要保存的数据量比较大怎么办?
      

  14.   

    建议抽出一个方法,填充DataSet的方法,在每次请求的时候都调用该方法。以避免把大数据量存放到Session里。
      

  15.   

    作为类成员的DS1,在页面Response之后,随着Page对象都销毁了~~fn2 如果在一个请求过程中是可以访问到的。如果在请求之后,fn2 就无法访问了。重新查一边,要不就保存到Session里(建议不要把大数据量保存到Session里)