日期:2014-05-17  浏览次数:20500 次

使用session传值后的出现的问题
//值来源页代码
if (sdr1.Read())         //执行读操作
                        {
                            Session["ID"]=username.Value;
                            Response.Redirect("~/browse.aspx/");
                        }
//接收页代码
protected void Page_Load(object sender, EventArgs e)
    {
       
        ID = Session["ID"].ToString();
        
    }
使用session传值后一旦触发接收页面的treeview的SelectedNodeChanged事件就会报错
//断点在这里,但是没有触发到断点就报错了protected void tv1_SelectedNodeChanged(object sender, EventArgs e)
    {
       
        SqlConnection sqlconn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString);
        sqlconn1.Open();
        tent.Value = "";
        string strselect = "select * from dairyinfomation where ID='" + ID + "'and dairytitle='" + this.tv1.SelectedValue + "'";
        SqlCommand sqlcmd = new SqlCommand(strselect,sqlconn1);
        SqlDataReader sdr = sqlcmd.ExecuteReader();
        if (sdr.Read())
        {
            title.Value = sdr["dairytitle"].ToString();
            tent.Value = sdr["dairytent"].ToString();

        }
        sqlconn1.Close();
    }
究竟是怎么一回事啊?求大神指导~~

------解决方案--------------------
莫名其妙!
你绑定tree里面的值,从你提供的代码来看,不是后台绑定的,应该是前台通过js脚本来绑定tree值的,之后你在触发tree对象的SelectedNodeChanged事件。
SelectedNodeChanged事件,在触发的时候,先得回传到自动填充Treeview所有节点,也就是在绑定一道,之后在触发SelectedNodeChanged事件,因,你这个是前端js绑定,tree回传的时候,就没有可以绑定的项,就报呢这个错误!当然也有不回调,在绑定一道的选择,可,你这是js绑定的,浏览器对js绑定的值没有存储,因此也会导致在绑定的时候,没有值!这个是我的一些理解! 
可,你又说,使用get传值可以,get获得值和session获得值,应该都是在Page_Load这个方法里面,那么这两种方式就没有什么区别啦!也应该有这样的问题。就算你在页面使用<%%>的方式获得值,在触发SelectedNodeChanged的时候,也是服务端进行解析啊!不明白!