- PR -

Webアプリで動的に生成したテキストボックスの値を取得する方法

1
投稿者投稿内容
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 の入門サイト
じゃんぬねっと日誌
1

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