0

次のように、5 つの GridView コントロールがすべて同じ SelectedIndexChanged イベントにリンクされた asp.net ページがあります。

    <div id="containerOne" class ="containerLeft">
        <h2 class="WorkInProgressHeading">To Analyse</h2>
        <asp:LinkedGridView runat="server"  ID ="grdAwaitingAnalysis" CssClass="Grid" OnSelectedIndexChanged="grid_SelectedIndexChanged">
            <AlternatingRowStyle CssClass="GridAltItem"/>
            <RowStyle CssClass="GridItem"/>
            <SelectedRowStyle CssClass="GridSelectedItem"/>
        </asp:LinkedGridView>
    </div>
    <div id="containerTwo" class="containerLeft">
        <h2 class="WorkInProgressHeading">Analysing...</h2>
        <asp:LinkedGridView runat="server" ID="grdAnalysisInProgress" CssClass="Grid" OnSelectedIndexChanged="grid_SelectedIndexChanged">
            <AlternatingRowStyle CssClass="GridAltItem"/>
            <RowStyle CssClass="GridItem"/>
            <SelectedRowStyle CssClass="GridSelectedItem"/>
        </asp:LinkedGridView>
    </div> etc.....

コード ビハインドでは、イベント ハンドラは次のようになります。

    protected void grid_SelectedIndexChanged(object sender, EventArgs e)
    {
        var sendingGrid = sender as LinkedGridView;

        if (sendingGrid.ID != "grdAwaitingAnalysis") grdAwaitingAnalysis.SelectedIndex = -1;
        if (sendingGrid.ID != "grdAnalysisInProgress") grdAnalysisInProgress.SelectedIndex = -1;
        if (sendingGrid.ID != "grdAwaitingReporting") grdAwaitingReporting.SelectedIndex = -1;
        if (sendingGrid.ID != "grdAwaitingInterp") grdAwaitingInterp.SelectedIndex = -1;
        if (sendingGrid.ID != "grdInterpInProgress") grdInterpInProgress.SelectedIndex = -1;

   }

選択した各インデックスが -1 に設定されている場合、 grid_SelectedIndexChanged イベントが再び発生することを期待していましたが、発生しなかったため、これによりスタックオーバーフロー例外が発生しなかったことに驚きました。

これは、WPF/Winforms の状況ではなく Web ページであるためですか? 私は ASP.NET に比較的慣れていないので、WPF / WinForms アプリに似ていると考えるのは間違っていますか?

ありがとう。

4

1 に答える 1

0

これは、WPF ではなく Web ページだからですか?

おそらく。非 AJAX フォームでは、インデックスが以前のレンダリングと異なる場合、IndexChangedイベントは postbackでのみ発生します。

WPF/Winforms の世界では、イベントは実際のコントロールに関連付けられているため、値が変更されるとすぐにイベントが発生します。

このイベントは、インデックスが実際に変更されたときにのみ発生することに注意してください。同じ値に設定しても、イベントは発生しません。

于 2013-04-29T13:41:37.007 に答える