- PR -

コントロール名を配列にしたい・・・

1
投稿者投稿内容
elmo
常連さん
会議室デビュー日: 2002/08/09
投稿数: 47
投稿日時: 2002-10-22 20:45
お疲れさまです。elmoです。
みなさんに教えて欲しいことがあります!

例えば、
texttest1
texttest2



texttest10
のような名前のテキストボックスが10個あります。
これらのコントロールに値を設定するとき、
for文でまわしたいのですがどうしたらいいのでしょうか?

今それができずに個々に値を設定しているのですが、大変面倒でやってられないです〜

テキストボックスの名前を配列にしようとしてみたのですが、同じ名前は駄目とはじかれてしまいました。

何かいいほうがあるはずだと思うのですが・・・。
よろしくお願いします〜。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-10-23 08:13
引用:

elmoさんの書き込み (2002-10-22 20:45) より:
のような名前のテキストボックスが10個あります。
これらのコントロールに値を設定するとき、
for文でまわしたいのですがどうしたらいいのでしょうか?



 面倒ですが、
dim cntrlArr(n) as arraylist
cntrlArr(0) = texttest1
cntrlArr(1) = texttest2



と、どこかでしています。

その他、Control::Controlsをぐるぐる回してみる、という方法も使っています。
うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-10-23 09:23
VB.NETになってから、コレクション変数が新しくできました。コレクション変数を使えば、簡単に、ループ文で回すことが出来ます。

Dim Txtcol As New Collection()

Txtcol.Add(texttest1)
Txtcol.Add(texttest2)
Txtcol.Add(texttest3)

for I=1 to 3
Txtcol(I).Visible = false
next

コレクション変数の中には、オブジェクトごと格納が可能で、コレクションそれぞれの中に格納されているオブジェクトのプロパティ・メソッドを使用可能になっています。ただし、インテリセンスにはもちろんならないですが(苦笑)

_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2002-10-23 09:24
引用:
texttest1
texttest2



texttest10
のような名前のテキストボックスが10個あります。
これらのコントロールに値を設定するとき、
for文でまわしたいのですがどうしたらいいのでしょうか?


コード:
for(int i=1; i<=10; i++){
  ((TextBox)Page.FindControl("texttest" + i)).Text = "設定値";
}


こんな感じではどうでしょう。
会議室デビュー日: 2002/09/17
投稿数: 4
投稿日時: 2002-10-23 11:56
すみません、便乗させていただいて申し訳ないのですが、
私も入力チェックで同じようなことをやろうと思っています。
そこで、ぴでさんのコードを実行してみたのですが、

x:\xxx\xxx\xxx.aspx.cs(xxx): 'System.Web.UI.Control' に 'Text' の定義がありません。

とエラーが出てしまいました。(xの羅列は伏字です)
System.Web.UI.ControlからSystem.Web.UI.WebControlsへの型変換はできないのでしょうか…?
DaikiRyuto
大ベテラン
会議室デビュー日: 2002/07/23
投稿数: 200
投稿日時: 2002-10-23 13:25
引用:

啓さんの書き込み (2002-10-23 11:56) より:
すみません、便乗させていただいて申し訳ないのですが、
私も入力チェックで同じようなことをやろうと思っています。
そこで、ぴでさんのコードを実行してみたのですが、

x:xxxxxxxxx.aspx.cs(xxx): 'System.Web.UI.Control' に 'Text' の定義がありません。

とエラーが出てしまいました。(xの羅列は伏字です)
System.Web.UI.ControlからSystem.Web.UI.WebControlsへの型変換はできないのでしょうか…?



コードを見ないと何ともいえませんが、()の位置がずれてたり足りなかったりしませんか?
会議室デビュー日: 2002/09/17
投稿数: 4
投稿日時: 2002-10-23 15:50
すみません…(恥)
((TextBox)Page.FindControl("texttest" + i)).Text = "設定値";
を、
(TextBox)(Page.FindControl("texttest" + i)).Text = "設定値";
としていました。単純なミスですね。お恥ずかしい…。

お騒がせいたしました。DaikiRyutoさん、ありがとうございました。
ぴでさんにもご迷惑おかけしました。すみませんでした。

[ メッセージ編集済み 編集者: 啓 編集日時 2002-10-23 15:51 ]
elmo
常連さん
会議室デビュー日: 2002/08/09
投稿数: 47
投稿日時: 2002-10-28 14:45
elmoです。
遅くなりましたが、解決いたしました。
私はコレクションオブジェクトを使うことにしました。
FindControlはオブジェクトを検索しにいくってかいてあったので、処理的にどうなんだろうな〜と思い、私はこちらにしました。
(検証してないのでなんともいえませんが)。
ありがとうございました!
1

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