- PR -

Label に動的に値をセットしたい

1
投稿者投稿内容
あや☆
常連さん
会議室デビュー日: 2005/07/28
投稿数: 36
投稿日時: 2005-08-30 11:59
こんにちは。
いつも質問ばかりして申し訳ありませんが、またよろしくお願いします。

現在、C#.NET Webアプリケーションの開発をしています。

画面に Label1,Label2,Label3,Label4 を設置します。
他の画面にチェックボックス「A」「B」「C」「D」があり、
「A」「B」を選んだら、Label1=A, Label2=B
「C」「D」を選んだら、Label1=C, Label2=D
「A」「B」「D」を選んだら、Label1=A, Label2=B, Label3=D
というようにLabelに動的に値をセットしたいのですが、方法が分かりません。
感覚としては、

if(CheckBox1.Checked)
{
Labeli = A;
i++;
}
if(CheckBox2.Checked)
{
Labeli = B;
i++;
}
    ・
    ・
    ・
のようなことができると、簡単なんだろうなとは思いますが、
こういう書き方ってできるんでしょうか?
他の方法でもいいので、ご存知の方は教えてください。

よろしくお願いいたします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-08-30 12:19
CheckBoxのAutoPostBackをTrueにするとかいう話ではなくて??
普通にあや☆さんのコードでできると思うのですが。。。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-08-30 12:31
「Labeli」の部分ができないでしょう。

コード:
private void SetLabel(int i, string text)
{
  Label label = FindControl("Label" + i.ToString()) as Label;
  if (label != null)
    label.Text = text;
}


のようなことをする必要があると思います。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-08-30 13:04
他の方法としては、4個の配列を用意しておき、チェックされた文字列を順に配列に入れていきます。
あとは、4個の配列から、それぞれLabel1から順に値を入れていけば良いでしょう。

[ メッセージ編集済み 編集者: trapemiya 編集日時 2005-08-30 13:05 ]
あや☆
常連さん
会議室デビュー日: 2005/07/28
投稿数: 36
投稿日時: 2005-08-30 14:35
burton999さん、にしざきさん、trapemiyaさん
返信大変ありがとうございました。

にしざきさんのソースを参考に書いたら、うまく動作しました。
またtrapemiyaさんのアドバイス通り配列も使ってみて、すっきりとしたソースになりました。
参考までに、載せておきます。

//チェックをつけた項目を配列に代入
string [] Data = {"","A","B","D"};
//Label1,Label2・・・に上から順に代入
for(int i=1;i<Data.Length;i++)
{
Label Label = FindControl("Label" + i.ToString()) as Label;
if (Label != null)
Label.Text = Data[i];
}


ありがとうございました。
また質問することもあると思いますが、よろしくお願いいたします。
1

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