我遇到了一个奇怪的问题,我不确定在哪里查看或如何调试。我有一个父页面 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 事件的搜索按钮。当我第一次登陆默认省份时,Search 按钮按预期工作并触发 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>")));
}
}
现在,当我将省份更改为“ON”(或任何其他省份具有相同行为)时,当我单击新生成的 UC 上的 Search Button 时,它只会回发而不触发 OnClick 事件。点击两次,做同样的事情……第三次,它确实触发了 OnClick……并正常运行!!!
无论我在第一次加载时是否有“ON”视图,第二次是“SK”视图(或任何其他视图),都会出现这种行为,在这种情况下,我可以假设在视图的初始创建时某些东西会使按钮正常工作...但随后重新加载新控件将导致 OnClick 失败。
还有一点需要注意,一旦我改变了省份,即使我回到原来的省份,OnClick 也不起作用......另外我正在使用带有 RadAjaxManager 的 Telerik 控件
我如何调试它以找出我的问题出在哪里......更好我该如何解决这个问题?