- toto
- 常連さん
- 会議室デビュー日: 2005/10/18
- 投稿数: 46
- お住まい・勤務地: 岡山
|
投稿日時: 2005-10-18 11:12
初めて質問させていただきます。
.NET開発を始めて2ヶ月しか経っていない、初心者でございます。
皆様のお力をお借りできればと思い投稿させていただきました。
現在VB.NETにて商品予約管理のWebアプリを作成しております。
動的に生成した、テキストボックス(予約数)の値(.text)を、予約更新ボタン押下にてデーターべースに予約数を書き込む処理を行いたいのですが、テキストボックスの値の取得方法に悩んでおります。
動的に生成されるテキストボックスの数は、状況によって異なります。
何卒、よろしくお願いいたします。
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-10-18 11:20
| 引用: |
|
toiryさんの書き込み (2005-10-18 11:12) より:
テキストボックスの値の取得方法に悩んでおります。
|
FindControl... じゃなくて... 自分で生成しているのですから参照を取っておけば良いのではないでしょうか?
| 引用: |
|
動的に生成されるテキストボックスの数は、状況によって異なります。
|
これも自分で生成しているのですから管理はできます。
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- toto
- 常連さん
- 会議室デビュー日: 2005/10/18
- 投稿数: 46
- お住まい・勤務地: 岡山
|
投稿日時: 2005-10-18 11:38
じゃんぬねっと様、ご回答ありがとうございます。
説明が足りなくて申し訳ありません。
動的に生成したテキストボックスの値(旧予約数)は、ユーザーが変更後(新予約数)、予約更新ボタン押下にて新予約数をデーターベースに書き込みを行いたいと思っております。
>FindControl... じゃなくて... 自分で生成しているのですから参照を取っておけば良いのではないでしょうか?
上記の様な場合でも、「参照を取る」事が可能でしょうか。
もし、可能であればサンプルなどをご提示いただければ幸いです。
何卒、よろしくお願いいたします。
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-10-18 12:21
| 引用: |
|
toiryさんの書き込み (2005-10-18 11:38) より:
説明が足りなくて申し訳ありません。
動的に生成したテキストボックスの値(旧予約数)は、ユーザーが変更後(新予約数)、予約更新ボタン押下にて新予約数をデーターベースに書き込みを行いたいと思っております。
上記の様な場合でも、「参照を取る」事が可能でしょうか。
もし、可能であればサンプルなどをご提示いただければ幸いです。
|
上記が理由で取れなくなる、というのが私には想定できないので、(ユーザーが変更後?)
もしかしたら読み違いをしているかもしれません。
そんなこと聞いてるんじゃない! 的な回答だったらごめんなさい。
TextBoxCollection のようなクラスを作りました。(手抜きです)
| コード: |
|
Option Strict On
Public Class TextBoxCollection
Inherits System.Collections.ArrayList
Public Shadows Function Add(ByVal value As TextBox) As Integer
Return MyBase.Add(value)
End Function
Public Shadows Default Property Item(ByVal index As Integer) As TextBox
Get
Return DirectCast(MyBase.Item(index), TextBox)
End Get
Set
MyBase.Item(index) = Value
End Set
End Property
End Class
|
WebForm 側でこんなのを試してみました。(こちらも手抜き)
| コード: |
|
Option Strict On
Public Class WebForm1
Inherits System.Web.UI.Page
[ Web フォーム デザイナで生成されたコード ]
Private MyTextBoxes As TextBoxCollection
Private Sub Page_Load(...) Handles MyBase.Load
Me.MyTextBoxes = New TextBoxCollection()
Dim hTextBox1 As New TextBox()
hTextBox1.ID = "TextBox1"
hTextBox1.Style("margin-top") = "25px"
hTextBox1.Style("margin-left") = "100px"
Dim hForm As Control = Me.FindControl("Form1")
hForm.Controls.Add(hTextBox1)
Me.MyTextBoxes.Add(hTextBox1)
Dim hTextBox2 As New TextBox()
hTextBox2.ID = "TextBox2"
hTextBox2.Style("margin-top") = "25px"
hTextBox2.Style("margin-left") = "200px"
hForm.Controls.Add(hTextBox2)
Me.MyTextBoxes.Add(hTextBox2)
End Sub
Private Sub Button1_Click(...) Handles Button1.Click
Dim sPrompt As String = "TextBox の数 : " & Me.MyTextBoxes.Count.ToString() & Environment.NewLine
sPrompt &= "各 TextBox の値 : " & Environment.NewLine
For Each hTextBox As TextBox In Me.MyTextBoxes
sPrompt &= hTextBox.ID & " : " & hTextBox.Text & Environment.NewLine
Next hTextBox
Me.Button1.Text = sPrompt
End Sub
End Class
|
Button1 をクリックしたら当たり前ですが、正しい結果がボタンに表示されました。
もしかして、PostBack せずにクライアント側で取得という話ですか?
「予約更新ボタン押下にて」と書かれていたので、以上を想定してしまったのですが...
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- toto
- 常連さん
- 会議室デビュー日: 2005/10/18
- 投稿数: 46
- お住まい・勤務地: 岡山
|
投稿日時: 2005-10-18 16:26
じゃんぬねっと様、度々のご回答ありがとうございます。
ご提示いただいたサンプルで問題が解決いたしました。
貴重なお時間をいただき、本当にありがとうございました。
じゃんぬねっと様のHPを拝見して、もっと勉強いたします。
|
- Jitta
- ぬし
- 会議室デビュー日: 2002/07/05
- 投稿数: 6267
- お住まい・勤務地: 兵庫県・海手
|
投稿日時: 2005-10-18 20:14
DataGrid とか、Repeater とか、いろいろあると思うけど?
_____________________________________________________________________________
□ Posted by Jitta on 2005/10/18
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-10-19 08:46
| 引用: |
|
Jittaさんの書き込み (2005-10-18 20:14) より:
DataGrid とか、Repeater とか、いろいろあると思うけど?
|
FindControl のようなコンパイル解決できない状況があまり好きでないです。
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|