- - PR -
GridViewの更新後のイベントについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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 | ||||
|
投稿日時: 2009-02-18 15:48
http://www.google.com/search?hl=ja&q=GridView+%8Ds%82%F0%8DX%90V+%83C%83x%83%93%83g
| ||||
|
投稿日時: 2009-02-18 15:57
VS の各コントロールのプロパティでイベントとその発生条件(の簡単な説明)が見れますので、 更新コマンドが実行された後に発生するイベントもそこから見つけることが出来ます。 あと、GridView にバインド列が含まれている場合は初期表示時・編集等のボタン押下時の何れの場合でも、 最後に必ずDataBound イベントが発生します。 従って、どんな場合でも行いたい処理は、そこに記述しておけば間違いはありません。 [ メッセージ編集済み 編集者: 秋刀魚 編集日時 2009-02-18 16:02 ] | ||||
|
投稿日時: 2009-02-18 16:31
返答ありがとうございます。
御指摘頂いたのに申し訳ありません。 説明が不足していたので追加します。 @Updatedイベントでは、FindControlで見つかるものは行編集中のコントロール EditTemplateFieldで、例えば「TextBox1」が見つかります。 APageLoadイベントでは、FindControlで見つかるものは行編集前のコントロール ItemTemplateFieldで、例えば「Label1」が見つかります。 ページを開いたときは、Aのイベントが発生するので、FindControlにてGridViewのItemTemplateコントロールの色を変えられます。 御指摘のあったようにDataBoundイベントで、行編集(CommandFieldの)にて更新した後、行編集終了後のItemTemplateのコントロールをFindControlで色を変えようとしたのですが、 やはり、行編集終了後ではなく更新後にイベントが発生し、ItemTemplateのコントロールの色を変えたいのに、EditTemplateのコントロールが取得されてしまいます。 行編集確定後にItemTemplateのコントロールの値を取得する方法はないのでしょうか? 初歩的な質問かもしれませんが、御教授お願いいたします。 | ||||
|
投稿日時: 2009-02-18 17:17
RowUpdated イベントの
GridViewUpdatedEventArgs を見てもだめですか? http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridviewupdatedeventargs.aspx | ||||
|
投稿日時: 2009-02-18 18:13
DataBoundイベントで出来ました。
申し訳ありませんでした。 まずUpdatedイベントでフラグを立てて、その値(True,False)をViewStateに入れました。 そしてDataBoundイベントにて、そのフラグの値で条件判断しました。 そのときFindContorlでItemTemplateのコントロールを探すと見つかりました。 親切な御教授のお陰です。 ありがとうございました。 |
1