日期:2014-05-18  浏览次数:20518 次

Session问题又来了,点树有时不更新Session["data"]
这个问题只涉及到下面唯一的一个简单的页面,C#代码和aspx代码全给出,为了说明问题,先画出我的树

学校各部门
L__教务处
L__德育处
L__后勤
L__工会
学年
L__高一
L__高二
L__高三

我每次一点树的结点会执行
Session["data"] = TreeView1.SelectedNode.ValuePath.ToString();
这时我再点树下方的一个按钮执行:
String data = Session["data"] as String;
Response.Write(data);
会正常显示出刚刚赋值的Session["data"]

如果我点“高一”后点按钮会显示“学年/高一”,
再点“高二”后点按钮会显示“学年/高二”,
这时再点“高一”后点按钮却不会显示“学年/高一”,而仍然是“学年/高二”
如果这时再点“高三”后点按钮,会显示“学年/高三”
总结一下就是,好像点过的按钮再点的话,不会更新Session["data"],只有点了没点过的,才会改变它

如何改正以上毛病让我能正常点“点过的按钮并赋给Session["data"]”?

C#代码部分:
略去using
public partial class a_a : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
  }
  protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
  {
  Session["data"] = TreeView1.SelectedNode.ValuePath.ToString();
  }
  protected void Button2_Click(object sender, EventArgs e)
  {
  String data = Session["data"] as String;
  Response.Write(data);
  }
}

网页代码部分:(您可能不需要看,里面就是一个树,我上面画了,和一个按钮)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Tree.aspx.cs" Inherits="a_a" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>无标题页</title>
<style type="text/css">

  .tree td div
  {
  height: 20px !important;
  }
  *
  {
  padding: 0;
  margin: 0;
  border: 0;
  }
</style>
</head>

<body>
  <form id="form1" runat="server">
  <asp:TreeView ID="TreeView1" runat="server" LineImagesFolder="TreeLineImages" 
  ShowLines="True" ImageSet="Simple" 
  onselectednodechanged="TreeView1_SelectedNodeChanged" CssClass="tree" 
  Target="ContentFrame">
  <ParentNodeStyle Font-Bold="False" />
  <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
  <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" 
  HorizontalPadding="0px" VerticalPadding="0px" />
  <Nodes>
  <asp:TreeNode Text="学校各部门" Value="学校各部门">
  <asp:TreeNode Text="教务处" Value="教务处"></asp:TreeNode>
  <asp:TreeNode Text="德育处" Value="德育处"></asp:TreeNode>
  <asp:TreeNode Text="后勤" Value="后勤"></asp:TreeNode>
  <asp:TreeNode Text="工会" Value="工会"></asp:TreeNode>
  </asp:TreeNode>
  <asp:TreeNode Text="学年" Value="学年">
  <asp:TreeNode Text="高一" Value="高一"></asp:TreeNode>
  <asp:TreeNode Text="高二" Value="高二"></asp:TreeNode>
  &l