2012-06-04 4 views
1

Моя установка выглядит следующим образом: В случае Pageload я инициализировать DROPDOWNLIST следующим образом:ASP.NET C#: DropDownList SelectedIndexChanged Событие Не огневые

SONumList = new DropDownList(); 
SONumList.DataSource = SOList; 
SONumList.DataBind(); 
SONumList.Height = new Unit("19px"); 
SONumList.SelectedIndexChanged += (ChooseSODropDown); 
SONumList.AutoPostBack = true; 
Panel1.Controls.Add(SONumList); 

В случае ChooseSODropDown, что пожары, когда SelectedIndex на SONumList меняется, я создаю другой DropDownList под названием PNum:

PNumList = new DropDownList(); 
PNumList.DataSource = dataSource2; 
PNumList.DataTextField = "Part"; 
PNumList.DataValueField = "Part"; 
PNumList.DataBind(); 
PNumList.Height = new Unit("19px"); 
PNumList.SelectedIndexChanged += ChoosePNumDropDown; 
PNumList.AutoPostBack = true; 
Panel1.Controls.Add(PNumList); 

Хотя сам PNum поле отображается правильно и имеет данные надлежащим образом связаны, событие ChoosePNumDropDown никогда не срабатывает, даже если страница не постбэк. Я пробовал точку останова в начале функции, и она вообще не срабатывает.

Есть ли причина, по которой я не смог бы связать события с объектом внутри другого события?

+1

Хорошо читал: http://msdn.microsoft.com/en-us/library/ms178472.aspx –

+0

@Mike Christensen - вы наткнули меня на эту ссылку на несколько секунд. Если вы хотите опубликовать ответ, я удалю мой, поскольку вы были первыми. – David

+0

@DavidStratton - Хе-хе, хорошо. Я надеялся, что кто-то напишет более подробный ответ (я не сделал ни одного ASP.NET-разработчика через несколько лет, так что для меня все это немного туманно, я просто помню, что этот материал был немного запутанным). Я говорю, держите ответ, хотя это, безусловно, ценно. –

ответ

2

Короткий ответ заключается в том, что к моменту увольнения ChooseSODropDown, слишком поздно связывать любые обработчики событий с существующими элементами управления. Это связано с тем, что предыдущее состояние элемента управления десериализуется из окна в пределах OnLoad, и это начальное состояние используется для запуска события onchange, которое должно быть запущено.

Я считаю, что вам нужно будет инициализировать все элементы управления в OnLoad, включая обработчик событий для ChoosePNumDropDown, и переместить любую требуемую логику в этот обработчик событий. Насколько мне известно, нет способа добавить дополнительные обработчики событий в существующий обработчик событий и ожидать, что он будет запущен в том же обратном направлении.

Я рекомендую прочитать в Page Lifecycle, чтобы ознакомиться с информацией о том, как именно обрабатываются события.

+0

Спасибо. Это информация, которую я искал. – Falterfire

Смежные вопросы