情况是这样的,下面两个函数中都打开了Expert_Add 页面 
protected void Button2_Click1(object sender, EventArgs e)
    {
        this.Response.Redirect("~/Expert/Expert_Add.aspx");
    }
 protected void MyGridView_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Edit")
        {
            Session[Session.SessionID + "ExpertID"] = e.CommandArgument.ToString();
            this.Response.Redirect("~/Expert/Expert_Add.aspx");
        }
    }
在Expert_Add页面中有个TextBox_Add控件,在Button2_Click1打开的Expert_Add.aspx页面中给TextBox_Address赋值,在程序中的是能够取得Text的,但是在MyGridView_RowCommand打开的Expert_Add.aspx页面中无法取得TextBox_Address中内容,不知是什么原因。如果把Session[Session.SessionID + "ExpertID"] = e.CommandArgument.ToString();这条语句去掉就很正常。
请高手指点下,谢谢了!

解决方案 »

  1.   

    哪里有给TextBox_Address赋值?看不懂什么意思!
      

  2.   

    没大看清楚楼主的意思
    不过一般是一个变量的生存周期
    或者设置了protected 什么的
      

  3.   

    e.CommandName == "Edit"
    返回什么值啊
      

  4.   

    都没有给TextBox_Address赋值呀,跳转的时候也没传给Expert_Add 页面什么值呀
      

  5.   

    Session[Session.SessionID + "ExpertID"] = e.CommandArgument.ToString();你调试时是什么状况?
      

  6.   

    Session[Session.SessionID + "ExpertID"] = e.CommandArgument.ToString();
    将e.CommandArgument.ToString()输出,看是否有值
      

  7.   

    抱歉,简单点就是:在TextBox控件中输入内容,但是在后台代码中却没法取得输入内容。
      

  8.   

    是不是 e.CommandArgument.ToString()没有你所要的值 然后你赋给Session[Session.SessionID + "ExpertID"]时把原来的Session[Session.SessionID + "ExpertID"]值给代替为了空(“”)自然传过去只能是个空串了
      

  9.   

    错误的原因找到了,原来是读取数据库资料的操作没有限定在!Page.IsPostBack页面初始化的时候进行,导致提效了更改的数据之后,页面又在加载时重新读取数据库资料,替换掉了更改过的信息。粗心大意所致的逻辑错误,谢谢各位了!
      

  10.   

    Session[Session.SessionID + "ExpertID"] = e.CommandArgument.ToString();这条语句是有误的。。你可以分两次进行赋值。因为session的值 在些发生改变取值时就会发生错误