我有一个页面,用户可以在其中更新用户信息(例如他们的名字)。我在这个页面上也有一个用户控件,它显示了很多信息,包括用户的名字。
我遇到的问题是,当我更改此页面上的第一个名称时,保存数据后用户控件不会更新。
这是我的前端:
<UC:LeftNav ID="leftNav" runat="server" />
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />
我的按钮点击事件以保存用户信息:
protected void btnSave_Click(object sender, EventArgs e)
{
...
user.FirstName = txtFirstName.Text();
user.Save();
...
}
我的用户控件显示用户信息:
protected void Page_Load(object sender, EventArgs e)
{
...
lblFirstName.Text = user.Firstname;
...
}
我浏览了调试器,发现在用户控件的btnSave_Click
事件之后,我的页面上的Page_Load
事件发生了。
我是否可以在之前将btnSave_Click
事件发生我在用户控件中加载用户数据?
答案 0 :(得分:2)
不,在引发事件时无法更改。但是,您可以将用户加载代码放入Bind
方法,然后使用btnSave_Click
方法调用它。
在leftNav
用户控件中:
public void Page_Load(object sender, EventArgs e)
{
if(!IsPostback)
{
BindUserInfo();
}
}
public void BindUserInfo()
{
//Binding code here
}
在页面上:
public void btnSave_Click(object sender, EventArgs e)
{
//Do save work
leftNav.BindUserInfo();
}