C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: GridViewのフォントカラー設定とメッセージについて


(過去ログ 60 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■34283 / inTopicNo.1)  GridViewのフォントカラー設定とメッセージについて
  
□投稿者/ キツネリス (4回)-(2009/03/25(Wed) 09:43:56)

分類:[ASP.NET (C#)] 

現在 Visual Web Developer 2008にてAsp.netの開発(というか勉強?)を行っています。

1)GridViewについて
GridViewの該当する列にきた時に、その値に一致したフォントカラーをセットしたいのですが、
やり方がわからないので、教えていただけないでしょうか。

行全体の色を変えるソースを見つけ
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["bgcolor"] = DataBinder.Eval(e.Row.DataItem, "bg_color_cd").ToString();
//DataBinder.Eval(e.Row.DataItem, "bg_color_cd")はテーブルに定義されたカラーを持ってくる。)
}
"bgcolor"を"fontcolor"などにして、とりあえず行全体の色を変えられるかな?などと試してみたのですが、
うまくいきませんでした。^^;


2)メッセージボックスについて
Button1.Attributes["onclick"] = "return confirm('クリックしました');";
'クリックしました'の文字列に変数を追加するにはどうしたら良いかも教えてください。

また、チェック処理でメッセージボックスを表示させたいと思っているのですが、
1回ボタンを押した時には反応せず、複数回押すとメッセージボックスが表示されるのですが、
記述やイベントとの結び付け方があるのでしょうか?

以上になりますが、よろしくお願いいたします。
引用返信 編集キー/
■34293 / inTopicNo.2)  Re[1]: GridViewのフォントカラー設定とメッセージについて
□投稿者/ いしだ (197回)-(2009/03/25(Wed) 13:06:41)
> 1)GridViewについて

e.Row.ForeColor = Color.Green;
って感じでどうでしょう。

> 2)メッセージボックスについて

string msg = "クリックしたかも";
Button1.Attributes["onclick"] = "return confirm('" + msg + "');";

って事ですか?

> また、チェック処理でメッセージボックスを表示させたいと思っているのですが、
> 1回ボタンを押した時には反応せず、複数回押すとメッセージボックスが表示されるのですが、
> 記述やイベントとの結び付け方があるのでしょうか?
ちょっと意味が理解できないです。
上のボタンの事を言ってますか?
ボタンにClientScriptを設定するタイミングが問題かも。。。?

引用返信 編集キー/
■34294 / inTopicNo.3)  Re[1]: GridViewのフォントカラー設定とメッセージについて
□投稿者/ biac (71回)-(2009/03/25(Wed) 13:29:14)
biac さんの Web サイト
> 1)GridViewについて

> e.Row.Attributes["bgcolor"] = DataBinder.Eval(e.Row.DataItem, "bg_color_cd").ToString();

e.Row.ForeColor = …
では?
※ ForeColor プロパティは System.Drawing.Color 型ですからね。 String をそのまま代入はできないはずですよ。

> "bgcolor"を"fontcolor"などにして、

TR 要素に bgcolor 属性はありますけど、 fontcolor 属性はありませんよ。
http://www.asahi-net.or.jp/~SD5A-UCD/rec-html401j/struct/tables.html#edef-TR

実際には、 e.Row.FindControl("ラベルの変数名") とかやって、 Row の中に入っている Label を取り出して、 その ForeColor を変えたいのかな?
※ RowDataBound() でいろいろやるサンプル
http://www.dotnetspider.com/forum/162487-change-gridview-row-color.aspx


> 2)メッセージボックスについて
> Button1.Attributes["onclick"] = "return confirm('クリックしました');";
> 'クリックしました'の文字列に変数を追加するにはどうしたら良いかも教えてください。

この Button1 は、GridView の中にあるもの?
変数は、ユーザーの操作によって変わるもの?
だとすると、 HTML と JavaScript が相当理解できていないとムリです。

GridView の外にボタンがあって、 変数の値は次のポストバックまで変わらないなら、
> Button1.Attributes["onclick"] = string.Format("return confirm('{0}クリックしました');", foo);
みたいにするだけですけどね。


(3)
> また、チェック処理でメッセージボックスを表示させたいと思っているのですが、
> 1回ボタンを押した時には反応せず、複数回押すとメッセージボックスが表示されるのですが、
> 記述やイベントとの結び付け方があるのでしょうか?

それだけではなんとも…
複数回押したときにチェック処理が実行されるように書いてあるのでしょう、としか言いようがないです。
引用返信 編集キー/
■34299 / inTopicNo.4)  Re[2]: GridViewのフォントカラー設定とメッセージについて
□投稿者/ キツネリス (5回)-(2009/03/25(Wed) 15:51:49)
2009/03/25(Wed) 15:54:36 編集(投稿者)
いしだ さん、biac さん、レスありがとうございました。
>>1)GridViewについて

> e.Row.ForeColor = Color.Green;
> って感じでどうでしょう。

e.Row.Cells[7].ForeColor = System.Drawing.Color.Blue;

にて、特定の列のフォントカラーを変更する事ができました。ありがとございます。

質問なのですが、
e.Row.Cells[7]の"7"をDataBindのフィールド名から列インデックスを取得するような
メソッドはありますでしょうか?

>※ ForeColor プロパティは System.Drawing.Color 型ですからね。
>String をそのまま代入はできないはずですよ。

テーブルに定義されている値が"#000000"のような16進数形式なのですが、
これをSystem.Drawing.Colorに変換して使うには WebColorConverterクラスのConvertTo
あたりを使えば良さそうという事が分かったのですが、具体的にどうやって
System.Drawing.Colorと結びつけたりするのかが分かりませんでした。

 
>>2)メッセージボックスについて
> 
> string msg = "クリックしたかも";
> Button1.Attributes["onclick"] = "return confirm('" + msg + "');";
> 
> って事ですか?

ダブルコーテーションでしたか。。シングルコーテーションでは試したみたのですが、
無事動作しました。ありがとうございます。


>この Button1 は、GridView の中にあるもの?
いえ。普通のボタンです。
押したら画面の値を取得してDBに登録するような感じです。

> ボタンにClientScriptを設定するタイミングが問題かも。。。?

>それだけではなんとも…
>複数回押したときにチェック処理が実行されるように書いてあるのでしょう、
>としか言いようがないです。


protected void btnInsert_Click(object sender, EventArgs e)
{
    if (!txtCheck())
    {
        string err = "テスト";
        btnInsert.Attributes.Add("OnClick", "alert('!"+ err +"');");
        return;
    }
    :
    :
  
}

ソースはこんな感じです。
ブレークポイントを置いてみても、メッセージボックスのところは通るのですが、
1回目はメッセージボックスは表示されません。
ちなみにボタンのプロパティは特に設定していません。

すみませんが、よろしくお願いいたします。

引用返信 編集キー/
■34302 / inTopicNo.5)  Re[3]: GridViewのフォントカラー設定とメッセージについて
□投稿者/ いしだ (198回)-(2009/03/25(Wed) 16:21:42)
2009/03/25(Wed) 16:23:59 編集(投稿者)
> e.Row.Cells[7]の"7"をDataBindのフィールド名から列インデックスを取得するような
> メソッドはありますでしょうか?

それは無いんじゃないでしょうか?
以下のように工夫する必要があるかも。

for (int i = 0; i < GridView1.Columns.Count; i++)
{
    if (GridView1.Columns[i].ToString() == "列名")
    {
        // この時のiが取得したいindex
    }
}

列名とGridViewのヘッダー名が違う場合はもう一工夫いりますね。

> テーブルに定義されている値が"#000000"のような16進数形式なのですが、
> これをSystem.Drawing.Colorに変換して使うには WebColorConverterクラスのConvertTo
> あたりを使えば良さそうという事が分かったのですが、具体的にどうやって
> System.Drawing.Colorと結びつけたりするのかが分かりませんでした。

Color.FromName("#000000")
でいけますね。


> ソースはこんな感じです。
> ブレークポイントを置いてみても、メッセージボックスのところは通るのですが、
> 1回目はメッセージボックスは表示されません。
> ちなみにボタンのプロパティは特に設定していません。

1.1回目のボタンを押す
2.ボタンに設定されているJavaScript実行
3.ポストバック
.....
4.btnInsert_Click実行

という動作なので、2.の時点ではまだbtnInsert_Clickが実行されていません。
なので、ボタンにはClientScriptが設定されていないわけです。
2回目以降は既に4.が実行されているので、ボタンを押すとJavaScriptが実行されます。

引用返信 編集キー/
■34319 / inTopicNo.6)  Re[4]: GridViewのフォントカラー設定とメッセージについて
□投稿者/ biac (72回)-(2009/03/25(Wed) 18:45:08)
biac さんの Web サイト
あ、 やはり。 Web サーバーとブラウザの作業分担を意識されていないようですね。


> btnInsert.Attributes.Add("OnClick", "alert('!"+ err +"');");

この行を実行するのは、 Web サーバー (ASP.NET) ですが、 実行時にメッセージボックスを出すわけじゃありません。
この行を実行すると、 次のように、 HTML の要素の中に onclick 属性が出力されます。
<input type=…中略… onclick="alert('!{errの中身}');" />
※ 正確には、 出力されるのは Render() メソッドの中ですけど。

Web サーバー側ですべての処理が実行されると、 最後に、 この要素を含む HTML ドキュメントが Web サーバーからブラウザに送信されます。
ブラウザは、 受け取った HTML を解釈して、 表示します。 さきほどの input 要素は、 ブラウザが解釈して、 ボタンとして表示されるわけです。

そして、 この input 要素には onclick 属性が指定されていますので、 このボタンがクリックされたときに、 ブラウザが、 onclick 属性に指定された JavaScript ( alert('!{errの中身}'); ) を実行します。


・ASP.NET は、 HTML ( その他、 ブラウザが解釈できるコンテンツ ) を生成する。
・ブラウザは、 受け取った HTML を解釈して表示する。
・ユーザーがボタンなどを操作したとき、 その処理はまずブラウザが行う。 ( その結果として、 Web サーバーにリクエストが送信されれば、 ASP.NET の処理が走る。 )
引用返信 編集キー/
■34329 / inTopicNo.7)  Re[5]: GridViewのフォントカラー設定とメッセージについて
□投稿者/ キツネリス (6回)-(2009/03/26(Thu) 08:59:01)
レスが遅れてしまいましたが、
いしださん、biacさん、ありがとうございました。

GridVeiwのForeColorの設定、無事うまく実装することができました。

>Color.FromName("#000000")
>でいけますね。

これ、biacさんからレス頂いていた

>※ RowDataBound() でいろいろやるサンプル
http://www.dotnetspider.com/forum/162487-change-gridview-row-color.aspx

ここに載っていますね。失礼いたしました。


メッセージボックスの出力に関してはwebアプリケーション独自の処理の流れが
あるみたいですねぇ。
もう少し勉強してみます。

どうもありがとうございました。m(_ _)m
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -