次のように、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 アプリに似ていると考えるのは間違っていますか?
ありがとう。