上面写错了,应该是:Session["theid"] = id.ToString();改为:
Session["theid"] = theLeaveWordId.ToString();

解决方案 »

  1.   

    要用APPLICATION 或用SESSION ??? 其实我只要在这一个页面中传值呀.
      

  2.   

    使用private的变量。你没有建立起比较高级的控制逻辑。通常的控制原则是:在事件中通知哪些东西需要刷新,然后在page_PreRender事件中实际去重建这些东西。除非另有原因,通常你的this.GridViewWordList.SelectedRow不需要保存到什么地方,其它需要这个值的地方去读取this.GridViewWordList.SelectedRow 属性就行了,用不着去读Session。Session也不能随便乱用。如果别的程序员也使用Session["theid"],或者用户在浏览器同一进程有两个进程访问同一会话(例如在ie上按 Ctrl+N 键或者使用 ie 的tab方式打开其它页面),都是多个对象互相胡乱覆盖同一个Session["theid"]对象,这是很容易蒙混过关(当没有懂得测试web程序的测试人员时)的。
      

  3.   

    谢谢sp1234! 你的提示是很建设性的。的确,我"没有建立起比较高级的控制逻辑"!呵呵  我才开始学.NET ,开始以为只简单的修改 
    protected void BtnReaplyLeaveWord_Click(object sender, EventArgs e)为Public void BtnReaplyLeaveWord……  或什么的就可以在别的事件里面访问了。再问,还有更简单的办法可以解决吗?就只在一个页面中传值。
      

  4.   

    theLeaveWordId 变量应该定义在所有事件,函数或子程序的外面作为全局变量来用,你现在定义的theLeaveWordId 分别是各个事件的局部变量,当能不能传值
      

  5.   

    如果不是什么保密性的数据,可以放到url参数中。
      

  6.   

    一个过程级的变量在此过程结束时,该变量就无法使用了.所以,你可以使用sp1234的办法,来声明一个页级变量,就是说在class的声明下面,直接声明一个变量 .