AutoPostBack不会触发Page_Load

时间:2013-12-17 20:49:27

标签: c# asp.net postback autopostback

我有这样的asp ddl设置:

<asp:DropDownList ID="attendeeList2" runat="server" AutoPostBack="true" CssClass="tripRegistrationItem" />

C#:

private void attendeeList2_SelectedIndexChanged(object sender, EventArgs e)
{
    _mission = new Mission(Int32.Parse(tripList.SelectedValue));
    person = new Person(int.Parse(attendeeList2.SelectedValue));
    attendeeLabel.Text = person.FullName.ToString();
    ClearInputs(tripRegistrationWizard.WizardSteps[1].Controls);
    LoadAttributes();
    SetInfo();            
    }

private void InitializeComponent()
{            
    attendeeList.SelectedIndexChanged += new EventHandler(attendeeList_SelectedIndexChanged);
    attendeeList2.SelectedIndexChanged += new EventHandler(attendeeList2_SelectedIndexChanged);
}

我遇到的是attendeeList2_SelectedIndexChanged确实在DDL的选定项目发生更改时触发,并且执行了方法中的代码,但是不会引发Page_Load,Page_Init,Page_PreRender ... 。它几乎就像它没有做一个真正的PostBack,但它正在运行代码。我需要在OnChange事件中的Page_PreRender中做一些事情,但是无法弄清楚如何将它拉下来。

有人可以向我解释我做错了吗?

谢谢!

编辑:

以下是调用InitializeComponent()的代码:

override protected void OnInit(EventArgs e)
{
    //
    // CODEGEN: This call is required by the ASP.NET Web Form Designer.
    //
    InitializeComponent();
    base.OnInit(e);
}

编辑2: 我刚刚意识到我正在使用的客户端控件是在更新面板中。看来,当控件位于更新面板中时,它只是进行AJAX刷新,从不提升Page_Load,Page_Init ......一旦我将控件拉出更新面板,它现在会触发一个完整的回发,因为我期待。不知道为什么我在搜索时找不到那些信息,但现在我知道了。

1 个答案:

答案 0 :(得分:0)

请尝试在page指令中添加:

autoeventwireup="true"

类似:

<%@ page language="C#" autoeventwireup="true" codefile="yourpage.aspx.cs" inherits="yourclass"%>