//值来源页代码
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();
    }
究竟是怎么一回事啊?求大神指导~~

解决方案 »

  1.   

    你这个好像是item为Null 所以不能用item.link
      

  2.   

    你确定是因为session传值的原因吗? 那你用其他传值试试会不会报错?
      

  3.   

    如果我用get方式传值的话就没有问题,但是那个用户名信息就会暴露的在地址栏了!
      

  4.   

    可能是后面的值为null 导致的
      

  5.   

    问题就是那张图片里的代码不是我写的,应该是.net封装好的,我一用SESSION传值就在那里出错了!!!怎么解决啊?
      

  6.   

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