我在一个方法中用add()为hashtable加了几个元素
在另一个方法中访问就报错,
为什么?

解决方案 »

  1.   

    大概的代码:
    class
    {
    hashtable hs=new hashtable();private void Button_Click()
    {
    hs.Add("ee","11");
    hs.Add("dd","22");
    }private void Dropdownlist1_change()
    {
    Lable1.Text=hs["ee"].ToString();
    }
    }代码结构就这样,
    有什么错误?
      

  2.   

    Web应用么?注意Page的生命周期,在Page Response之后,Page的实例就销毁了。那么hs就是null了。
      

  3.   

    楼上正确,你可以把hashtable放在session里就ok了
      

  4.   

    怎样加入Session?
    我这样加入还是不正确:class
    {
    hashtable hs=new hashtable();private void Button_Click()
    {
    hs.Add("ee","11");
    hs.Add("dd","22");
    Session.add("hash",hs);
    }private void Dropdownlist1_change()
    {
    hs=(hashtable)Session["hash"];
    Lable1.Text=hs["ee"].ToString();
    }
    }
      

  5.   

    添加的没有问题,但是你这样使用,必须是先点击了Button,才能使用DropDownList否则 Session 里没有 hash 这个key另外,Session 本身就是一个(NameValueCollection)类似 Hashtable 的容器。所以可以直接使用:Page_Load里:
    if(!IsPostback)
    {
       Session.Add("ee", "11");
       Session.Add("dd", "22");
    }// Button 点击修改Session里的内容
    private void Button_Click()
    {
       Session.Add("ee", "33");
       Session.Add("dd", "44");
    }// 下拉框选择发生变化时,修改Label的显示内容:
    private void Dropdownlist1_change()
    {
       if(Session["ee"] != null)
          Label1.Text = Session["ee"].ToString();
    }
      

  6.   

    还有注意下,你的 Lable1 是不是写错了? Lable1 => Label1 ?
      

  7.   

    我点击了Button,开还是不能用!!!
    还有一点,我hashtable定义的是全局变量,
    我觉得不用Session 也应该可以,
    但无论用不用都有错,
    为什么???????????
      

  8.   

    把你完整的代码贴出来看看.Web应用保持数据的方式就那么几种:Application, Cache, Session, Cookie, ViewState, hidden 你应该先了解一下Web应用的编程模型比较有助于你的理解
      

  9.   

    如果你是web应用的话
    只是把它定义为全局变量
    当你post的时候会丢失的
    所以必须存起来
    放在session里比较简单
    你可以设置断点,调试一下
    看看问题究竟出在什么地方
    另外你可以贴出来你全部代码
    这样比较容易排错