2

我有一个页面,用户可以在其中更新他们的用户信息(比如他们的名字)。我在这个页面上还有一个用户控件,它显示了很多信息,包括用户的名字。

我遇到的问题是,当我更改此页面上的名字时,保存数据后用户控件没有更新。

这是我的前端:

<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事件发生?

4

1 回答 1

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();
}
于 2012-09-21T18:32:10.027 回答