2017-08-14 7 views
0

状況:VB.Netコードの変数に名前を使用してasp.netテキストボックステキストを読み取る

私はaspテーブルを持つaspxコンテンツページを持っています。表には1列の20行しかありません。各セルにはaspテキストボックスがあります。

ユーザーがボタンをクリックしたときにテキストボックスにテキストを追加するコードvb.netがあります。これはすべて正常に動作します。

私は何をする必要があり、自分の状況に正確に合ったものを見つけることができないようで、2番目のボタンがクリックされたときにテキストボックスを "ループ"する必要があります。

for/nextループを設定できるように、実際に使用されているテキストボックスの数がある隠しラベルがあります。私が理解できないように見えるのは、vb変数に割り当てられたテキストボックスの内容を正確に取得する方法です。

私は現在、このコードを持っている:変数名TNAMEを持つテキストボックスのテキストを割り当てるためにtrysライン上

for x As integer = 1 to fCount 
    tName = "TextBox" & x 
    Dim cFileName as String = CType(Controls(tName), TextBox).ToString() 
    blah blah blah other code 
Next 

このエラーアウト。これは私が試した最新のコードです。私は他の多くのものを試しましたが、私はそれを正しいものにすることはできません。

私のテキストボックスの名前は、TextBox1、TextBox2などで、TextBox20までです。隠しファイルカウンタを使用すると、使用されたものだけを試してみることができます。

ご協力いただければ幸いです!

+0

エラーメッセージは何ですか? –

+0

オブジェクトをオブジェクトのインスタンスに設定することはできません。それはテキストボックスが空白だと思うが、私はそれがないことを知っている。 – mbcharney

+0

'tName'が既存のコントロール名でなかった場合、そのエラーが発生します。 –

答えて

0

私は自分のコンピュータで試したコードです。あなたが遭遇するかもしれない他のエラーをうまく修正するために少し異なった構造になっています。さらに重要なのは、コードは動作します:

For x As Integer = 1 To 20 
    Dim tName As String = "TextBox" & x 

    If Not String.IsNullOrEmpty(CType(Controls(tName), TextBox).Text) Then 
     Dim cFileName As String = CType(Controls(tName), TextBox).Text 
    End If 
    Next 

私だけTextBox5TextBox10はデータが含まれている場合、これが本当であれば、fCountが2になるという仮定に基づいてfCountを処分した場合、あなたのループは正しいことではないでしょうTextBox1TextBox2を取得しようとしているからです。

.ToStringから.Textに変更されました。

エラーメッセージに戻ると、Controls(tName)はページのコントロールに評価する必要があります。そうしないとエラーが発生します。

+0

このコードを入力すると、次のエラーが表示されます。入力文字列が正しい形式でない。変数sFileNameが文字列として定義され、aspテキストボックスコントロールにテキストのみが含まれているため、これは奇妙に思えます。また、fCountは、使用されるテキストボックスの数だけループスルーするために使用されます。それらは1から始まり、順次増加します。では、なぜこのエラーが発生するのでしょうか? – mbcharney

関連する問題