top / index / prev / next / target / source

2002-09-05 diary: Visual C# + ASP.NET: 複数ドロップダウンリストの動的連動でハマる

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

Visual C# + ASP.NET: 複数ドロップダウンリストの動的連動でハマる

Page_Loadメソッドが真っ先に実行されてしまうんでやんの。

Visual C# + ASP.NET: Page_Load メソッドは最強です

複数のSystem.Web.UI.WebControls.DropDownListを 内容が連動するように実装していて少しハマりました。ボタンを押した際に ドロップダウンリストの選択位置を記憶して…とやろうとしていたのですが、ドロップダウンリストの内容そのものを動的に生成していると、これがうまく行かないのです。で よくよく調べてみると なんと Page_Loadメソッドが ポストされた際に真っ先に実行されるんだっていう法則性が理解できました。ボタンのイベントハンドラのメソッドよりも ず~っと先に実行されてしまうのです。これはすっごく注意しないと行けない癖です。なまじ他のプログラミング言語での経験があるとこの事実を理解することは困難だと思われます。、、、とはいえ ASP.NETの各機能を Jakarta Struts にマッピングしなおして考えると、ああなるほど Page_Loadが真っ先に実行されるのだなあ と理解することもできますねぇ。ううむ。これは要注意です。

で これの回避の仕方は Page_Loadメソッド内で IsPostBackプロパティの内容をチェックして挙動を変えることにより対処可能です。 Page_Loadメソッドが最強であることを回避するためのコード

                private void Page_Load(object sender, System.EventArgs e)
                {
                        // ページを初期化するユーザー コードをここに挿入します。

                        if(IsPostBack)
                        {
                                // ここで真っ先に ユーザが入力&選択した内容を取得する
                        }

                        // ウェブフォーム内容の初期化処理などを行う
                }

そういえば 某メーリングリストにて Page_Loadがナニガシというメールが良く流れていたなぁ などと ようやく思い起こすのであった…

会社の後輩と話していて…

会社の後輩と Visual Studio.NETが超不安定な話を話していたら、『Visual C++ 1.0 の頃に逆戻りですね~』 なんてツッコミを受けました。なるほど そういえば Visual C++ 1.0 も ものすごく不安定でしたね。Visual Studio も .NET版になって 1から出直しなんでしょうか。残念なことに バグが枯れた印象を感じさせません。

今日の午後は出張です

今日の午後は出張です。スケジュールとかいろいろ考えて工夫するなど 思いを巡らせています…

世間のニュースから () 2002


この日記について