我有一个奇怪的问题,我不知道在哪里看或如何调试。 我有一个父页A,它有一个7个省的组合框控件;每个省都有一个用户控制(查看)。默认情况下,所选索引是省“SK”,它在同一页面中加载用户控件View动态。
以下是父页面的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>")));
}
}
现在,当我将省份更改为“ON”(或任何其他省份具有相同的行为)时,当我单击新生成的UC上的“搜索”按钮时,它只会回发而不会触发OnClick事件。点击两次,做同样的事情......第三次,它确实触发OnClick ...并正常运行!!!
出现此问题,无论我是否“ON”查看第一次加载和“SK”查看(或任何其他视图)的第二时间,我可以假设一些初始创建的视图使得按钮工作正常...但后续重新加载新控件将导致OnClick失败。
另一点需要注意的是,一旦我更改了省份,即使我回到原来的省份,OnClick也无法正常工作......我也在使用Telerik控件和RadAjaxManager
我如何调试这个以找出我的问题所在......更好的我该如何解决这个问题?
答案 0 :(得分:1)
花了3天后...看起来这个问题与动态控制有关。我创建它而没有分配ID ...所以在娱乐时,不知何故它回发了几次可能是因为它使用了ASP的生成ID而且每次都不一样,所以我在按钮上的onCLick无法找到按钮最初叫它..我猜第三次,id是相同的,那就是它正确调用它。
无论如何,我知道这解决了我遇到的问题
答案 1 :(得分:0)
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="cmbProvince" />
<telerik:AjaxUpdatedControl ControlID="btnSearch" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
可以帮到你