none
ASP.NETのバージョンを上げたらDataGridのOnSelectedIndexChangedイベントが発生しなくなった RRS feed

  • 質問

  • 初めて投稿します。

     

    今まで正常に動作していたWebシステムを別の環境に移行したところ、DataGridの動作が変わってしまいました。

     

    移行前の環境は

     Microsoft Windows Server 2003 SP1

     Microsoft SQL Server 2000 (最新のSP適用済み)

     IIS 6.0 + ASP.NET 1.1

     

    移行先の環境は

     Microsoft Windows Server 2003 R2

     Microsoft SQL Server 2005 (最新のSP適用済み)

     IIS 6.0 + ASP.NET 2.0

     

    Webシステムを丸ごと移行し動作させてみたところ、画面の表示やデータアクセス結果の表示等、殆ど問題無く動作したのですが、DataGridに表示された行をクリックした時のイベント(OnSelectedIndexChanged)によって呼び出されるプロシージャが実行されなくなりました。

     

    このイベントで呼び出されるプロシージャでは、選択された行からキーデータを取得してSessionに格納するというコードのみです。

     

    いろいろと試したところ、IISの設定でASP.NETのバージョンを2.0から1.1に変更したら、正常に動作するようになりました。

     

    ちなみに開発したWebシステムはごく簡単なもので、ブラウザ上にDataGridを配置して、SQL Serverから取得したデータを一覧表示して、その中から選択させるという程度です。

    テキストエディタのみで作成したので、VisualStudio等のツールは使用していません。

     

    ASP.NETのバージョンを上げたことによって、従来のイベントが発生しなくなったりすることはあるのでしょうか?

    又、ASP.NETのどちらのバージョンでも動作するような対策がないでしょうか?

     

    以上よろしくお願い致します。

    2007年4月12日 8:00

回答

  • 非互換箇所がどれほど存在するのかは不明ですが、今後の参考にしたいと思います。

    みなさん、いろいろとアドバイス頂きましてありがとうございました。

    2007年4月18日 0:03

すべての返信

  •  Yocchan さんからの引用
     
    ASP.NETのバージョンを上げたことによって、従来のイベントが発生しなくなったりすることはあるのでしょうか?


    あります。

     Yocchan さんからの引用

    又、ASP.NETのどちらのバージョンでも動作するような対策がないでしょうか?

    基本的には無いと思って良いでしょう。2.0は1.1の完全な上位互換ではありません。2.0で開発したアプリケーションは2.0で、1.1で開発したアプリケーションは1.1で動かす必要があります。
    以下が参考になると思います。

     

    Windows Vistaにおける.NETアプリケーションの互換性問題
     http://itpro.nikkeibp.co.jp/article/COLUMN/20061017/250853/

    2007年4月12日 8:53
    モデレータ
  • 早速返信頂きましてありがとうございます。

     

    そうなんですか・・・。

    簡単なシステムではあるんですが、現在のバージョンで導入したお客様が結構多くて、今後のメンテナンスも考えるとソースはなるべく一元管理したかったのですが・・・。

     

    しかし、DataGridそのものが使用可能であるにもかかわらず、このSelectedIndexChangedイベント(のみ?)がサポートされなくなるなんて事はあるのでしょうか?

     

    立て続けに質問してしまって申し訳ございません。

    2007年4月12日 11:34
  • そこはテストおよびドキュメントなどの調査でつぶしていきましょう。

    結局はテストしかないんですよ。

    2007年4月12日 11:44
  • そうなんですか・・・。

    簡単なシステムではあるんですが、現在のバージョンで導入したお客様が結構多くて、今後のメンテナンスも考えるとソースはなるべく一元管理したかったのですが・・・。

    だったら、.NET Framework1.1 もインストールして、ASP.NET 1.1 で動かせば良いと思いますが。

    2007年4月12日 13:31
  • そこはテストおよびドキュメントなどの調査でつぶしていきましょう。

    結局はテストしかないんですよ。

    はい、まずイベントの発生回数調査をしてみました。

     

    IISでのASP.NETバージョン毎のイベント発生回数(DataGrid仕様 ヘッダー非表示 明細20行 フッター非表示)

     

     1.1.4322の場合

      ○DataGridへのBind時

       ・ItemCreated:22回(非表示ですがヘッダーとフッターの分が含まれています)

       ・SelectedIndexChanged:0回

      ○DataGridの行をクリックした時

       ・ItemCreated:22回(非表示ですがヘッダーとフッターの分が含まれています)

       ・SelectedIndexChanged:1回(ItemCreatedが22回発生した後に発生しています)

     

     2.0.50727の場合

      ○DataGridへのBind時

       ・ItemCreated:22回(非表示ですがヘッダーとフッターの分が含まれています)

       ・SelectedIndexChanged:0回

      ○DataGridの行をクリックした時

       ・ItemCreated:22回(非表示ですがヘッダーとフッターの分が含まれています)

       ・SelectedIndexChanged:0回

     

    やっぱりSelectedIndexChangedは発生していないようです。

    もう少し調べてみます。

     

     

    だったら、.NET Framework1.1 もインストールして、ASP.NET 1.1 で動かせば良いと思いますが。

    はい、そこでサーバとクライアントの両方について、Frameworkのインストール状況を調べてみました。

     

    WindowsServer2003

     ○管理ツール

      ・Microsoft .Net Framework 1.1 ウィザード

      ・Microsoft .Net Framework 1.1 構成

      ・Microsoft .Net Framework 2.0 Configuration

     ○プログラムの追加と削除

      ・Microsoft .Net Framework 2.0

      ・Microsoft .Net Framework 2.0 日本語 Language Pack

      ・Microsoft .Net Framework 3.0

      ・Microsoft .Net Framework 3.0 日本語 Language Pack

     

    WindowsXP

     ○管理ツール

      ・Microsoft .Net Framework 1.1 Configuration

      ・Microsoft .Net Framework 1.1 Wizards

      ・Microsoft .Net Framework 1.1 ウィザード

      ・Microsoft .Net Framework 1.1 構成

     ○プログラムの追加と削除

      ・Microsoft .Net Framework 1.1

      ・Microsoft .Net Framework 1.1 Hotfix (KB886903)

      ・Microsoft .Net Framework 1.1 Japanese Language Pack

      ・Microsoft .Net Framework 2.0

      ・Microsoft .Net Framework 2.0 用の Security Update (KB922770)

      ・Security Update for Microsoft .Net Framework 2.0 (KB917283)

      ・Microsoft .Net Framework 2.0 日本語 Language Pack

      ・Microsoft .Net Framework 3.0

      ・Microsoft .Net Framework 3.0 日本語 Language Pack

     

    これだけ見るとどちらも入っているように見えるんですが・・・。

    2007年4月13日 3:21
  •  Yocchan さんからの引用

    これだけ見るとどちらも入っているように見えるんですが・・・。

    この一文が気になりましたので、念のため補足しておきます。

     

    Webアプリケーションの場合、Yocchanさんがされたように、IISのASP.NETタブより、Webアプリケーション毎に.NET Frameworkのバージョンを指定してあげる必要があります。
    Windowsフォームアプリケーションの場合は、自動的に最適な.NET Frameworkのバージョンを選択して動きます。

    2007年4月13日 4:06
    モデレータ
  • trapemiya さん

    中博俊 さん

    囚人 さん

    いろいろアドバイス頂きましてありがとうございます。

     

    その後調査を続けてみましたが、やっぱりASP.NETのバージョンを2.0に変更すると、SelectedIndexChangedイベントのみが発生しなくなってしまい、その他のイベントはバージョン違いでも同じように発生していました。

    また、MSDNライブラリや書籍等でも調べてみたのですが、バージョンを上げるとSelectedIndexChangedが無くなるような説明も一切見つけられませんでした。(調査不足かもしれませんが・・・)

    DataGridではなくGridViewを使用したほうがよいとはあったのですが、そうすると旧バージョンでは動作しなくなってしまいますよね・・・。

     

    根本的な事になってしまいますが、ASP.NET 1.1ではSelectedIndexChangedは使用可能だが、ASP.NET 2.0にするとSelectedIndexChangedはなくなってしまったので、ASP.NET 1.1で動作させるか、バージョン毎のソース管理をするか、どちらかを選択と考えるべきなんでしょうか。

    また、本当にSelectedIndexChangedは2.0でなくなってしまったのでしょうか。

    2007年4月17日 7:49
  • というか.NETではサイドバイサイドが徹底されています。

    .NET1.1のものは1.1での範囲で同じ。

    2.0に上げる場合は多少の非互換が発生するということです。

     

    まぁこれまでずーーとこのあたりの考えは一緒です。

    1.1の場合には1.1で。2.0に上げる場合にはちゃんとテストしましょうということです。

    2007年4月17日 14:02
  • 非互換箇所がどれほど存在するのかは不明ですが、今後の参考にしたいと思います。

    みなさん、いろいろとアドバイス頂きましてありがとうございました。

    2007年4月18日 0:03