我需要掌握这个基本主题,因为我对网页很新。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
UserLogin ObjUser = new UserLogin();
Persona ObjPersona = new Persona();
DataSet ds = new DataSet();
string UserName = null;
UserName = WindowsIdentity.GetCurrent().Name;
UserName = Regex.Replace(UserName, ".*\\\\(.*)", "$1", RegexOptions.None);
ds = ObjUser.GetUserData(UserName);
ObjPersona.UserName = UserName;
ObjPersona.RealName = ds.Tables[0].Rows[0][0].ToString();
ObjPersona.Ranking = ds.Tables[0].Rows[0][1].ToString();
if (((bool)ds.Tables[0].Rows[0]["TNT"] == false)) ObjPersona.TNT = false;
else ObjPersona.TNT = true;
if (((bool)ds.Tables[0].Rows[0]["TLG"] == false)) ObjPersona.TLG = false;
else ObjPersona.TLG = true;
if (((bool)ds.Tables[0].Rows[0]["NEG"] == false)) ObjPersona.Negocios = false;
else ObjPersona.Negocios = true;
if (((bool)ds.Tables[0].Rows[0]["RES"] == false)) ObjPersona.Residenciales = false;
else ObjPersona.Residenciales = true;
if (((bool)ds.Tables[0].Rows[0]["BO"] == false)) ObjPersona.BO = false;
else ObjPersona.BO = true;
if (((bool)ds.Tables[0].Rows[0]["BOA"] == false)) ObjPersona.BOA = false;
else ObjPersona.BOA = true;
ObjUser.CreateRegister(ObjPersona);
}
}
加载页面后执行简单操作。存储过程填充DataSet,然后我使用数据集将数据放入Object中,在本例中为 ObjPersona 。
现在,当我打算在另一个电话中使用ObjPersona时,让我们说吧。
protected void BtnClose_Click(object sender, EventArgs e)
{
ObjUser.UpdateRegister(ObjPersona);
LblClose.Text = "Sesión Cerrada";
}
由于那里没有数据,因此无法工作。 (一旦我想使用对象内的数据,就会出现错误)
我想调用获取用户数据的过程一次(这种情况是page_load),然后从那里开始工作。如何访问另一个控件中调用的数据?
感谢。
答案 0 :(得分:3)
为每个请求创建一个新的asp.net Page对象实例。每次回发到页面时,都会调用Init
,Load
,eventhandler。你没有处理同一个对象。
如果您在上次请求期间填充了成员变量,则此次将无法使用该成员变量。
您需要使用一些方法在Postbacks中保留数据。
Asp.net提供了两种内置方法来完成此任务。一个是ViewState
,另一个是Session
。会话变量存储在服务器上,ViewState
数据存储在表单中的隐藏输入变量中。
如果您在DataSet
中有大量数据,请避免将其放入ViewState
。它会创建一个大的ViewState并使你的页面加载缓慢。