- PR -

GridViewの更新後のイベントについて

1
投稿者投稿内容
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2009-02-18 14:58
申し訳ありませんが、どうしてもわからないことが発生したので投稿させていただきます。

GridViewのことについてなんですが、

GridView内で文字色を変更する必要が出てきました。

If Value >= 12 Then
CType(GridView1.Rows(i).FindControl("Label10"),Label).ForeColor=Drawing.Color.Red
ElseIf Value >= 12 Then

End If

PageLoadイベントでは、上記のようなコードでGridView内の特定のコントロールの色を変えることに成功しました。

しかし、行編集機能にてコントロールの値を更新したあとはコントロールの色を変えることがどうしてもできません。

更新が完了して、行編集が終了した直後に発生するイベントがあればコントロールの色を変えることができるのですが、

そのようなイベントがあればご教授いただきたいです。

他の方法があればその方法を御教授お願いいたします。

環境:
 ツール VisualStudio2005
 DB   SQLServer
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-02-18 15:48
http://www.google.com/search?hl=ja&q=GridView+%8Ds%82%F0%8DX%90V+%83C%83x%83%93%83g
秋刀魚
会議室デビュー日: 2008/11/10
投稿数: 16
投稿日時: 2009-02-18 15:57
引用:

ムラさんの書き込み (2009-02-18 14:58) より:
更新が完了して、行編集が終了した直後に発生するイベントがあればコントロールの色を変えることができるのですが、

そのようなイベントがあればご教授いただきたいです。



VS の各コントロールのプロパティでイベントとその発生条件(の簡単な説明)が見れますので、
更新コマンドが実行された後に発生するイベントもそこから見つけることが出来ます。

あと、GridView にバインド列が含まれている場合は初期表示時・編集等のボタン押下時の何れの場合でも、
最後に必ずDataBound イベントが発生します。

従って、どんな場合でも行いたい処理は、そこに記述しておけば間違いはありません。

[ メッセージ編集済み 編集者: 秋刀魚 編集日時 2009-02-18 16:02 ]
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2009-02-18 16:31
返答ありがとうございます。

御指摘頂いたのに申し訳ありません。

説明が不足していたので追加します。

@Updatedイベントでは、FindControlで見つかるものは行編集中のコントロール
 EditTemplateFieldで、例えば「TextBox1」が見つかります。

APageLoadイベントでは、FindControlで見つかるものは行編集前のコントロール
 ItemTemplateFieldで、例えば「Label1」が見つかります。

ページを開いたときは、Aのイベントが発生するので、FindControlにてGridViewのItemTemplateコントロールの色を変えられます。

御指摘のあったようにDataBoundイベントで、行編集(CommandFieldの)にて更新した後、行編集終了後のItemTemplateのコントロールをFindControlで色を変えようとしたのですが、

やはり、行編集終了後ではなく更新後にイベントが発生し、ItemTemplateのコントロールの色を変えたいのに、EditTemplateのコントロールが取得されてしまいます。

行編集確定後にItemTemplateのコントロールの値を取得する方法はないのでしょうか?

初歩的な質問かもしれませんが、御教授お願いいたします。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-02-18 17:17
RowUpdated イベントの
GridViewUpdatedEventArgs を見てもだめですか?

http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridviewupdatedeventargs.aspx
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2009-02-18 18:13
DataBoundイベントで出来ました。

申し訳ありませんでした。

まずUpdatedイベントでフラグを立てて、その値(True,False)をViewStateに入れました。

そしてDataBoundイベントにて、そのフラグの値で条件判断しました。

そのときFindContorlでItemTemplateのコントロールを探すと見つかりました。

親切な御教授のお陰です。

ありがとうございました。
1

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