我在Page_Load事件中添加了如下加载数据库的操作,然后把数据库读出的值赋值给ProvinceNode类,
在页面中我选择一个TreeView的节点,然后把这个节点的有关信息记录到一个selectNode类中
然后点击查询按钮,查询selectNode的有关其它数据,
但是每次选中TreeView的节点或者单击查询按钮,Page_Load总会执行,导致我的ProvinceNode重新初始化,然后
selectNode的值又变为空置,所以一直查询不到数据,继而无法绘图
请问这种情况怎么解决呢?代码如下:
public partial class InqGraph : System.Web.UI.Page
{
ProvinceNode provinceNode = new ProvinceNode();
StNode selectNode = null;
WindSpeedInqGraph windSpeedInqGraph = new WindSpeedInqGraph();
protected void Page_Load(object sender, EventArgs e)
{
string connectString = @"Server=(Local); pwd=123456; uid=sa; database=LDRoadWeatherInfo";
SqlConnection connection = new SqlConnection(connectString); try
{
connection.Open();
}
catch (System.Exception ex)
{
Console.WriteLine(ex.ToString());
}
tv_Stations.Nodes.Clear(); if(provinceNode.LoadStInfo())
{
TreeNode node = new TreeNode();
node.Text = provinceNode.ProvinceName;
tv_Stations.Nodes.Add(node);
foreach (RoadNode roadNode in provinceNode.ForEachRoad)
{
TreeNode node1 = new TreeNode();
node1.Text = roadNode.RoadName;
tv_Stations.Nodes[0].ChildNodes.Add(node1);
foreach (StNode st in roadNode)
{
TreeNode node2 = new TreeNode();
node2.Text = st.StName;
tv_Stations.Nodes[0].ChildNodes[st.RoadIndex].ChildNodes.Add(node2);
}
}
tv_Stations.ExpandAll(); }
GeneralInqSingleStReport tmp = new GeneralInqSingleStReport();
WindSpeedInqGraph.selectNode = selectNode;
tmp.BindReportViewer();
}
protected void ZedGraphWeb2_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject,
System.Drawing.Graphics g, ZedGraph.MasterPane pane)
{
windSpeedInqGraph.Draw(g, pane);
} protected void tv_Stations_SelectedNodeChanged(object sender, EventArgs e)
{
if (tv_Stations.SelectedNode.Depth == 2)
{
TreeNode node1 = tv_Stations.SelectedNode, node2 = tv_Stations.SelectedNode.Parent;
int roadIndex, stIndex;
stIndex = node2.ChildNodes.IndexOf(node1);
roadIndex = node2.Parent.ChildNodes.IndexOf(node2);
selectNode = provinceNode.GetStByIndex(roadIndex, stIndex);
}
} protected void bt_Inq_Click(object sender, EventArgs e)
{
if (selectNode != null)
{
selectNode.InqByDay(2008, 1, 1, 24);
}
}
}
在页面中我选择一个TreeView的节点,然后把这个节点的有关信息记录到一个selectNode类中
然后点击查询按钮,查询selectNode的有关其它数据,
但是每次选中TreeView的节点或者单击查询按钮,Page_Load总会执行,导致我的ProvinceNode重新初始化,然后
selectNode的值又变为空置,所以一直查询不到数据,继而无法绘图
请问这种情况怎么解决呢?代码如下:
public partial class InqGraph : System.Web.UI.Page
{
ProvinceNode provinceNode = new ProvinceNode();
StNode selectNode = null;
WindSpeedInqGraph windSpeedInqGraph = new WindSpeedInqGraph();
protected void Page_Load(object sender, EventArgs e)
{
string connectString = @"Server=(Local); pwd=123456; uid=sa; database=LDRoadWeatherInfo";
SqlConnection connection = new SqlConnection(connectString); try
{
connection.Open();
}
catch (System.Exception ex)
{
Console.WriteLine(ex.ToString());
}
tv_Stations.Nodes.Clear(); if(provinceNode.LoadStInfo())
{
TreeNode node = new TreeNode();
node.Text = provinceNode.ProvinceName;
tv_Stations.Nodes.Add(node);
foreach (RoadNode roadNode in provinceNode.ForEachRoad)
{
TreeNode node1 = new TreeNode();
node1.Text = roadNode.RoadName;
tv_Stations.Nodes[0].ChildNodes.Add(node1);
foreach (StNode st in roadNode)
{
TreeNode node2 = new TreeNode();
node2.Text = st.StName;
tv_Stations.Nodes[0].ChildNodes[st.RoadIndex].ChildNodes.Add(node2);
}
}
tv_Stations.ExpandAll(); }
GeneralInqSingleStReport tmp = new GeneralInqSingleStReport();
WindSpeedInqGraph.selectNode = selectNode;
tmp.BindReportViewer();
}
protected void ZedGraphWeb2_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject,
System.Drawing.Graphics g, ZedGraph.MasterPane pane)
{
windSpeedInqGraph.Draw(g, pane);
} protected void tv_Stations_SelectedNodeChanged(object sender, EventArgs e)
{
if (tv_Stations.SelectedNode.Depth == 2)
{
TreeNode node1 = tv_Stations.SelectedNode, node2 = tv_Stations.SelectedNode.Parent;
int roadIndex, stIndex;
stIndex = node2.ChildNodes.IndexOf(node1);
roadIndex = node2.Parent.ChildNodes.IndexOf(node2);
selectNode = provinceNode.GetStByIndex(roadIndex, stIndex);
}
} protected void bt_Inq_Click(object sender, EventArgs e)
{
if (selectNode != null)
{
selectNode.InqByDay(2008, 1, 1, 24);
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//不想执行的代码
}
//想执行的代码
}
{
//代码
}
但我选中TreeView的一个节点的时候,结果tv_Stations.SelectedNode.Depth 出现异常
tv_Stations.SelectedNode为null
if (!IsPostBack)
{
if(provinceNode.LoadStInfo())
{
TreeNode node = new TreeNode();
node.Text = provinceNode.ProvinceName;
tv_Stations.Nodes.Add(node);
foreach (RoadNode roadNode in provinceNode.ForEachRoad)
{
TreeNode node1 = new TreeNode();
node1.Text = roadNode.RoadName;
tv_Stations.Nodes[0].ChildNodes.Add(node1);
foreach (StNode st in roadNode)
{
TreeNode node2 = new TreeNode();
node2.Text = st.StName;
tv_Stations.Nodes[0].ChildNodes[st.RoadIndex].ChildNodes.Add(node2);
}
}
tv_Stations.ExpandAll();
}
}
但是provinceNode的值第一次加载的时候是对的
但是页面再次刷新后,没有加载,这些值就不在了
感觉ProvinceNodeNode被重新初始化了
{
if (tv_Stations.SelectedNode.Depth == 2)
{
TreeNode node1 = tv_Stations.SelectedNode, node2 = tv_Stations.SelectedNode.Parent;
int roadIndex, stIndex;
stIndex = node2.ChildNodes.IndexOf(node1);
roadIndex = node2.Parent.ChildNodes.IndexOf(node2);
selectNode = provinceNode.GetStByIndex(roadIndex, stIndex);
} if (selectNode != null)
{
selectNode.InqByDay(2008, 1, 1, 24);
}
}