- PR -

DataGrid が認識されなくなった

1
投稿者投稿内容
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-17 11:24
ASP.NET(VB)<VS.NET2003>で開発しております。

DataGrid が貼り付けてある画面で「編集」「更新」「中止」「削除」「追加」といった機能を実現しています。どの処理も正常に動作していたのですが、画面名が変更になったため、VS.NET で以下のような編集をしたところ、どのボタンも認識しなくなってしまいました。

1.ソリューションエクスプローラでファイル名を変更。
  A.aspx → B.aspx
2.B.aspx.vb でページ名を変更。
  Public Class _A → Public Class _B

何が原因なのでしょうか?
最悪、画面を作り直せば動作するのでしょうが、再度画面名の修正が発生した場合に原因が分かっていないと再度作り直しになってしまいますので、今のうちに原因を把握しておきたいと考えております。
<本当は、開発時に画面名の変更がある方がおかしいのでしょうけど・・・ その辺はご勘弁ください>

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

追記:
認識しなくなった、とは、ItemCommandイベントやEditCommandイベントに処理が入ってこない、という意味です。

追記: すいません。画面名変更時に、以下の修正もしております。
3.グリッドにテンプレート列を2列追加し、ItemTemplete にそれぞれボタンを追加しました。

[ メッセージ編集済み 編集者: ひろれい 編集日時 2006-03-17 11:27 ]

[ メッセージ編集済み 編集者: ひろれい 編集日時 2006-03-17 11:35 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-17 11:36
ソースがいじられて
InitializeComponent()
のイベントハンドラのインストールのコードが消えてたりとかですかね。
_________________
囚人のジレンマな日々
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-17 11:49
囚人さん、早速の回答ありがとうございます。
引用:

囚人さんの書き込み (2006-03-17 11:36) より:

ソースがいじられて
InitializeComponent()
のイベントハンドラのインストールのコードが消えてたりとかですかね。



幸いにも画面名変更前の aspx.vb がありましたので、上記を確認しましたが、中身は同じで、何のコードも記載されていませんでした。
以下、現状のソースから採取。
コード:
#Region " Web フォーム デザイナで生成されたコード "

    'この呼び出しは Web フォーム デザイナで必要です。
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents lblTaisyoYYYY As System.Web.UI.WebControls.Label
    Protected WithEvents lblTaisyoMM As System.Web.UI.WebControls.Label
    Protected WithEvents lblTuki As System.Web.UI.WebControls.Label
    Protected WithEvents lblStatus As System.Web.UI.WebControls.Label

    'メモ : 次のプレースホルダ宣言は Web フォーム デザイナで必要です。
    '削除および移動しないでください。
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        ' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。
        ' コード エディタを使って変更しないでください。
        InitializeComponent()
    End Sub

#End Region


どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-03-17 12:39
B.aspxファイルのページディレクティブ(先頭の一行)で継承元(ソース側)の
クラスを指定してると思います。
Class_AからClass_Bにクラス名を変更した場合、ここも変更する必要がありますが
その点は大丈夫ですか?
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-17 13:03
引用:

どっとねっとふぁんさんの書き込み (2006-03-17 12:39) より:

B.aspxファイルのページディレクティブ(先頭の一行)で継承元(ソース側)の
クラスを指定してると思います。
Class_AからClass_Bにクラス名を変更した場合、ここも変更する必要がありますが
その点は大丈夫ですか?



はい。その点は、確認しております。クラス名を変更した時点で、自動的に書き換わりました。

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="B.aspx.vb" Inherits="Test._B"%>
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2006-03-17 13:08
引用:

ひろれいさんの書き込み (2006-03-17 11:24) より:

ItemCommandイベントやEditCommandイベントに処理が入ってこない、という意味です。


Handles 句がとれちゃっているとか・・・
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-17 13:17
みなさん、ご迷惑をおかけ致しました。解決しました。

引用:

えんぞ@?さんの書き込み (2006-03-17 13:08) より:

Handles 句がとれちゃっているとか・・・



回答は、それに近かったようです。
グリッドに関するコードを全て削除し、グリッドをダブルクリックして作成されるコード(SelectedIndexChanged)を元に各イベントを再作成したところ、正常に動くようになりました。コードは一切変えておらず、削除したコードをそのままイベントごとに転記していっただけなんですけど、それで解決しました。

ちなみに、元のイベントには、Handles句は付いていました。
どこかでグリッド名を認識しなくなったのでしょうか・・・
どこか腑に落ちませんけど・・・
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-18 09:59
引用:

ひろれいさんの書き込み (2006-03-17 13:17) より:

ちなみに、元のイベントには、Handles句は付いていました。
どこかでグリッド名を認識しなくなったのでしょうか・・・


WithEvents での宣言名と合致していなかったとか、それくらいしか考えられませんけど...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)