ViewState["SelectedNum"]=SelectedNum;
调试一下看这一行执行了没有SelectedIndexChanged事件默认不是直接触发的,提交到服务器后才执行,SelectedIndexChanged和触发提交动作的方法有个执行顺序先后的问题。
除非设置了DropDownList的Autopostback 属性为True,都是触发提交的事件先执行

解决方案 »

  1.   

    我的DropDownList的Autopostback社的是true,不然没反应!!
      

  2.   

    PageLoad事件是先于control触发事件的
      

  3.   

    不是这个原因吧!!我考虑到了
    if(!Page.IsPostBack)
    {
    SelectedNum=0;
    }
    ELSE
    {
    SelectedNum=int.Parse(ViewState["SelectedNum"].ToString());
    }
      

  4.   

    你自己可以调试一下事件发生的先后顺序,在你要检测的地方加入下面的代码:Response.Write("<script>alert('" + funcname + "')</script>");
      

  5.   

    谢谢!!发现是先提交后再执行SelectedIndexChanged的程序!那我该如何办才能让ViewState["SelectedNum"]保留值呢?
      

  6.   

    首先定义一个变量lngSelectedNumpublic  int lngSelectedNum
    {
    get
    {
    object o = ViewState["SelectedNum"];
    if(o==null)
    return 0;
    else
    return int.Parse(o.ToString());
    }
    set
    {
    ViewState["SelectedNum"]=value;
    }
    }然后在SelectedIndexChanged事件中
      lngSelectedNum = DropDownList.SelectedIndexChangedOK 了
      

  7.   

    lngSelectedNum = DropDownList.SelectedIndexChanged是什么意思?
     DropDownList.SelectedIndexChanged可是个void的函数啊!!
      

  8.   

    页面的执行顺序是 Page_Load --> DropDownList1_SelectedIndexChanged其实你在Page_Load方法里面直接:SelectedNum = DropDownList1.SelectedIndex;就可以得到你要的值了.
      

  9.   

    或者把你上面的代码改为:if(!Page.IsPostBack) {
       ViewState["SelectedNum"] = SelectedNum = 0;
    }
    else {
       SelectedNum = Int32.Parse(ViewState["SelectedNum"].ToString());
    }
      

  10.   

    可以考虑用Cookie或Session存储!!
      

  11.   

    SelectedNum,定义和赋值在什么地方?