首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于变量作用范围的有关问题,请大家帮忙,多谢

2012-01-05 
关于变量作用范围的问题,请大家帮忙,谢谢。问题如下:在Main.aspx里,有一个MultiView控件,View1为A.ascx用户

关于变量作用范围的问题,请大家帮忙,谢谢。
问题如下:
在Main.aspx里,有一个MultiView控件,View1为A.ascx用户控件,View2为B.ascx用户控件。执行过程为先显示A.ascx,然后点击A.ascx里的修改按钮,执行Main.aspx里的委托事件,给B.ascx里的变量赋值,并显示B.ascx。然后点击Main.aspx里的保存按钮,保存数据并显示A.ascx。
具体代码如下:
B.ascx里:
private   string   sEditKey;
public   string   EditKey
{
set   {sEditKey   =   Value;}
get   {return   sEditKey;}
}
LoadEditDataByKey()
{
数据库PKey   =   this.EditKey;
根据PKey查找对应数据。
}
Save()
{
数据库PKey   =   this.EditKey;
根据PKey保存数据
}

A.ascx里:
private   string   sEditKey;
public   string   EditKey
{
set   {sEditKey   =   Value;}
get   {return   sEditKey;}
}
Edit()
{
this.EditKey   =   "123 ";
执行Main.aspx里的委托事件EditButtonClick()
}

Main.aspx
委托事件:
EditButtonClick()
{
B用户控件.EditKey   =   A用户控件.EditKey
LoadEditDataByKey();
显示A用户控件所在View
}

SaveButtonClick()
{
  执行B用户控件里的Save()函数。
}

出现的情况是:我点击A用户控件里的修改按钮时,能正常运行,数据库PKey   =   this.EditKey这条语句能得到PKey的值=123。
并访问数据库得到数据,显示B.aspx.可是当我接着点击Main.aspx里的保存按钮,执行B用户控件里的Save函数时,数据库PKey   =   this.EditKey这条语句得到的PKey为NULL,这是为什么?我点击修改按钮后,并没有做起他的操作,直接就进行保存,为什么sEditKey
的值就丢了呢?

请大家帮忙。谢谢!


[解决办法]
MultiView
你换的时候好象不保存状态啊
比如fileupload等文件就会丢失
[解决办法]
a、b都是ascx吧?因为作用域不同,所以数据会出现丢失,有两种方式可以解决:
1:a、b里面的方法都采用代理,在Main.aspx里写;
2:将a、b里的值通过session传
[解决办法]
是不是状态丢失了,检查下

热点排行