使用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的时候,也是服务端进行解析啊!不明白!