我有这样的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 ......一旦我将控件拉出更新面板,它现在会触发一个完整的回发,因为我期待。不知道为什么我在搜索时找不到那些信息,但现在我知道了。
答案 0 :(得分:0)
请尝试在page指令中添加:
autoeventwireup="true"
类似:
<%@ page language="C#" autoeventwireup="true" codefile="yourpage.aspx.cs" inherits="yourclass"%>