奇妙な問題が発生していて、どこを見ればよいのか、どのようにデバッグするのかわかりません。私は7つの州のコンボボックスコントロールを持つ親ページAを持っています。各州にはユーザーコントロール(表示)があります。デフォルトでは、選択されたインデックスは州「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イベントをトリガーせずにポストバックするだけです。2回クリックすると、同じことが行われます...そして3回目は、OnClickがトリガーされます...そして通常どおり実行されました!!!
この動作は、最初にロードしたときに「ON」ビューを使用し、センコンド時間を「SK」ビュー(またはその他のビュー)に設定した場合に発生します。ビューの最初の作成で何かがボタンを正しく機能させると想定できます。 ...ただし、その後に新しいコントロールをリロードすると、OnClickが失敗します。
もう1つの注意点として、州を変更すると、元の州に戻ってもOnClickが機能しません...また、RadAjaxManagerでTelerikコントロールを使用しています
これをデバッグして問題がどこにあるかを見つけるにはどうすればよいですか...さらに良い方法でこれを修正できますか?