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

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

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

Re[6]: HTMLサーバコントロールの値取得


(過去ログ 72 を表示中)

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

■42364 / inTopicNo.1)  HTMLサーバコントロールの値取得
  
□投稿者/ mimi (1回)-(2009/10/14(Wed) 11:35:51)

分類:[.NET 全般] 

VB.NETは始めたばかりでまだまだ解らないことだらけなのでですが、

<input type="text" id="txt_name">

というテキストボックスに入力された値というのはどのように取得すればいいのでしょうか?
txt_name.text としても「txt_name は宣言されていません」というエラーが出てしまいます。

実際には<%For〜Next%>処理で、テキストボックスのidを"txt_name<%=N%>"としてN個配置したいのですが、そのようなことは可能でしょうか?
そもそも根本から間違っているのかどうかさえ解らない状態です。

いろいろと検索もしてみたのですが、やり方が悪いのか思うようなページにたどり着けず、さっぱり解りません。
よろしくお願いいたします。
引用返信 編集キー/
■42377 / inTopicNo.2)  Re[1]: HTMLサーバコントロールの値取得
□投稿者/ gtk2k (99回)-(2009/10/14(Wed) 14:46:19)

runat="server"
をつけてみたらどう?
引用返信 編集キー/
■42380 / inTopicNo.3)  Re[2]: HTMLサーバコントロールの値取得
□投稿者/ mimi (2回)-(2009/10/14(Wed) 15:34:34)
gtk2k 様

ありがとうございます!
教えていただいた通り、runat="server" を付けてみたら txt_name.value で値取得できました!

そこで、

<%Dim n As Integer%>
<%For n = 0 to 11%>
<input type="text" id="txt_name<%=n%>" runat="server" />
<%Next%>

として、12個のテキストボックスができるようにしてみたのですが、

'txt_name<%=n%>' は有効な識別子ではありません。

とのエラーになってしまいました。なのでテキストボックスの部分を

<input type="text" id="txt_name" runat="server" />

とすると、当然というかなんというか、全てtxt_nameというidで作成されてしまいます。


実現したい処理としては、【ユーザーが指定した個数分のテキストボックスを表示して、それぞれ入力されたものを1つずつテーブルに書き込む】というようなことです。

自分では上記の方法しか思いつかず、そうしているのですが、やはり繰り返し処理等でn個のテキストボックスを作るというのは無理なのでしょうか?

よろしくお願いいたします。



引用返信 編集キー/
■42382 / inTopicNo.4)  Re[3]: HTMLサーバコントロールの値取得
□投稿者/ gtk2k (100回)-(2009/10/14(Wed) 17:06:11)
インラインでは無理っぽいね。
コードで追加したほうがいいと思う。

For i As Integer = 0 To 10
   Dim txt As New TextBox()
   txt.ID = "txtName" & i
   form1.Controls.Add(txt)
Next

引用返信 編集キー/
■42390 / inTopicNo.5)  Re[4]: HTMLサーバコントロールの値取得
□投稿者/ まさる (94回)-(2009/10/14(Wed) 22:00:46)
まさる さんの Web サイト
> 分類:[.NET 全般]
となっていますが、ASP.NETということでよろしいでしょうか。

ASP.NETにはRepeaterというコントロールがあります。

Repeaterクラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.repeater.aspx

このクラスを使うと、繰り返し同じような内容を出力することができます。

今回の場合、

1.aspxファイルに、Repeaterコントロールを配置し、ItemTemplate内にTextBoxコントロールを配置する。

2.aspx.vbファイルに、Repeaterへ必要な数の要素をもったコレクションのデータバインドを行う。

3.ボタンクリック等の処理で、Repeaterコントロールの項目でループし、中に配置したテキストボックスの値を取得する。

という手順になるでしょう。

以下、参考情報。

RepeaterコントロールはItemTemplateに記述した内容が繰り返されます。

「必要な数の要素をもったコレクション」を作るには、Dim array(10) As Integer のように、要素数を指定して配列を作成するのが最も簡単でしょう。

RepeaterコントロールのItemsプロパティで、各項目が取得できます。

 ItemsプロパティはRepeaterItemクラスのコレクションです。RepeaterItemの内部に含まれるコントロールは、FindControlメソッドを使用して取得します。

 FindControlメソッドは指定したIDのコントロールを返すメソッドです。
 今回のようにTemplateに配置したコントロールの場合でも、同じIDを指定することでそのRepeaterItemに含まれるコントロールが取得できます。

 なお、FindControlメソッドの戻り値はControl型ですので、TextBox型へのキャストが必要になりますので注意してください。

引用返信 編集キー/
■42392 / inTopicNo.6)  Re[5]: HTMLサーバコントロールの値取得
□投稿者/ まさる (95回)-(2009/10/14(Wed) 22:36:19)
まさる さんの Web サイト
あ、すみません。「HTMLサーバコントロール」が<input type="text" runat="server" />を指すのなら、TextBoxコントロールをHtmlInputTextコントロールに読み替えてください。
引用返信 編集キー/
■42420 / inTopicNo.7)  Re[6]: HTMLサーバコントロールの値取得
□投稿者/ mimi (3回)-(2009/10/15(Thu) 15:12:19)
2009/10/15(Thu) 15:14:38 編集(投稿者)
2009/10/15(Thu) 15:14:30 編集(投稿者)

gtk2k 様

遅くなってしまい申し訳ありません。
教えていただいたとおり、コードで追加したら値取得、n個作成共にできました!
ありがとうございました!




まさる 様

>> 分類:[.NET 全般]
>となっていますが、ASP.NETということでよろしいでしょうか。

申し訳ありません、どこに分類すればいいかすらわからない状態でした。
お恥ずかしい限りです。

教えていただいたとおり、Repeaterコントロールでn個作成でき、値取得もバッチリできました!
知識不足・経験不足で、いろいろと試行錯誤しながらだったので遅くなってしまい申し訳ありません。
Repeaterコントロールはテーブル等からのデータが有る場合のみ繰り返し表示できるのだと思い込んでしまっていました(^^;)
とても勉強になりました。
ありがとうございました!

お2方とも、貴重なお時間を割いていただいてありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -