在页面中有treeview,button两个控件,在PageLoad时加载好了treeview,代码:
protected void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
BuildTree(treeView); //建树
}
}
当执行Button的Click事件后treeView.Nodes.Count为0了,每次提交后会刷新页面,但我不想在每次提交都要重建树,有什么办法可以防止这种情况啊?
protected void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
BuildTree(treeView); //建树
}
}
当执行Button的Click事件后treeView.Nodes.Count为0了,每次提交后会刷新页面,但我不想在每次提交都要重建树,有什么办法可以防止这种情况啊?
2 ajax
具体g一下
我试过OnClientClick事件,由于我是用的第三方Button,只支持JavaScript,所以还是用得不顺心,无法很好地写控制代码。
刚试了一下ViewState,这个是保存本页面的对象,但只支持可序列化的对象.我用Session解决的,但感觉这个方式是不对劲.大家给我看看,如果对象多,我觉得用Session来保存不可取。
实现目的的代码:
protected void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
BuildTree(treeView); //建树
Session["tree"] = treeView;
}
else
{
if (Session["tree"] != null)
treeView = Session["tree"];
}
}
{
get
{
if (ViewState["Flag"] != null)
return (int)ViewState["Flag"];
else
{
ViewState["Flag"] = 0;
return 0;
}
}
set
{
ViewState["Flag"] = value;
}
}protected void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
if(Flag == 0)
{
Flag = 1;
BuildTree(treeView); //建树
}
}
}
或者用一个变量控制
1.自动 - 你在第一次Page_Load时生成一次,然后存到ViewState里面,之后让TreeView自己通过ViewState重新生成。
2.手动 - 每次Page_Load都手动重新生成。无论如何你必须选择一个,性能方面各有优劣,但我觉得都不会是大问题。