2

奇妙な問題が発生していて、どこを見ればよいのか、どのようにデバッグするのかわかりません。私は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コントロールを使用しています

これをデバッグして問題がどこにあるかを見つけるにはどうすればよいですか...さらに良い方法でこれを修正できますか?

4

2 に答える 2

1

これに3日間費やした後、問題は動的制御に関連しているようです。IDを割り当てずに作成しました...レクリエーションで、ASPの生成されたIDを使用していて、毎回同じではなかったためか、ボタンをonCLickで見つけることができなかったため、何とかして数回投稿されました。それはもともとそれを呼んだ..私は3回目に、idは同じであり、それが適切にそれを呼んだときだと思います。

とにかく、私はこれが私が持っていた問題を修正したことを知っています

于 2011-11-23T15:38:24.180 に答える
0

ScriptManagerがこのコードを配置した後

<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="cmbProvince" />
                <telerik:AjaxUpdatedControl ControlID="btnSearch" />
            </UpdatedControls>
        </telerik:AjaxSetting>

    </AjaxSettings>

あなたを助けるかもしれません

于 2011-11-22T16:25:12.703 に答える