У меня странная проблема, и я не уверен, где искать или как отлаживать.
У меня есть родительская страница A, в которой есть поле управления со списком из 7 провинций; Каждая провинция имеет пользовательский контроль (вид). По умолчанию выбранным индексом является провинция "SK", которая загружает на одну и ту же страницу пользовательский элемент управления Динамически.
Ниже мой HTML и код для родительской страницы
<telerik:RadComboBox ID="cmbProvince" runat="server" OnSelectedIndexChanged="cmbProvince_SelectedIndexChanged" AutoPostBack="true">
<Items>
<telerik:RadComboBoxItem runat="server" Text="Quebec" Value="QC" />
<telerik:RadComboBoxItem runat="server" Text="Ontario" Value="ON" />
<telerik:RadComboBoxItem runat="server" Text="Saskatchewan" Value="SK" />
<telerik:RadComboBoxItem runat="server" Text="Manitoba" Value="MB" />
<telerik:RadComboBoxItem runat="server" Text="Yukon" Value="YT" />
<telerik:RadComboBoxItem runat="server" Text="Nuvanut" Value="NU" />
</Items>
</telerik:RadComboBox>
protected void Page_PreInit(object sender, EventArgs e)
{
MasterPage master = this.Master;
_currentProvince = GetCurrentOperatingProvince(IsPostBack);
cmbProvince.SelectedValue = _currentProvince;
txtReferenceNo.Text = "TECHLOS" + DateTime.Now.ToString("MMddyyyy-HHMMss");
//Reload Dynamic Control on Every Page Creation
LoadDetailControl();
}
private void LoadDetailControl()
{
UserControl ucPPSAControl = (UserControl)LoadControl(GetUserControlPath(_currentProvince));
IPPSAView provView = ucPPSAControl as IPPSAView;
ApplicationContext.TargetProvince = _currentProvince;
PPSAPresenter presenter = new PPSAPresenter(provView, ApplicationContext);
provView.AttachPresenter(presenter, cmbProvince.SelectedValue, txtReferenceNo.Text);
phPPSAControl.Controls.Add(ucPPSAControl);
}
protected void cmbProvince_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
phPPSAControl.Controls.Clear();
_currentProvince = e.Value;
LoadDetailControl();
}
В каждом UC по провинции есть кнопка «Поиск» с событием OnClick. Когда я в первый раз оказываюсь в провинции по умолчанию, кнопка «Поиск» работает, как и ожидалось, и запускает OnClick и запускается обработчик событий Search_Click.
Ниже приведен типичный UC для каждой провинции
HTML button.
<telerik:RadButton ID="btnSearch" runat="server" Text="Search" OnClick="Search_OnClick">
</telerik:RadButton>
and Code behind
protected void Search_OnClick(object sender, EventArgs e)
{
if (isValidSearchRequest())
{
DisplayResultsFromResponse(presenter.Search());
}
else
{
phResponse.Controls.Add(new LiteralControl(string.Format("<span style='color:red'>Invalid Search Request</span>")));
}
}
Теперь, когда я изменяю провинцию на «ВКЛ» (или любая другая провинция имеет такое же поведение), когда я нажимаю кнопку «Поиск» на только что сгенерированном UC, он отправляет сообщения только без запуска события OnClick. Двойной щелчок делает то же самое ... и в третий раз запускает OnClick ... и работает как обычно !!!
Такое поведение происходит, если я имею «ВКЛ.» Просмотр в первый раз, когда он загружается, и просмотр «SK» (или любой другой просмотр в этом отношении) во второй раз, когда я могу предположить, что что-то с начальным созданием представления делает кнопка работает правильно ... но последующая перезагрузка нового элемента управления приведет к сбою OnClick.
Еще один момент, на который следует обратить внимание: как только я изменю провинцию, даже если я вернусь в исходную провинцию, OnClick не будет работать ... Также я использую элементы управления Telerik с RadAjaxManager
Как я могу отладить это, чтобы узнать, где моя проблема ... еще лучше, как я могу это исправить?