アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります

FormView1内にあるテキストボックス内の計算をさせたいのですが
FormView1のTEXTBOXが見当たらず困っています

環境visualstudio2005standard
sql
web
VB

書籍を購入して下記を作成しました。通常なら下記で動作確認は出来ました。
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim intnyuukin As Integer
Dim intsiharai As Integer
Dim intgoukei As Integer

intnyuukin = Val(TextBox1.Text)
intsiharai = Val(TextBox2.Text)

intgoukei = intnyuukin - intsiharai

TextBox3.Text = intgoukei


End Sub

で合計が計算されのですがFormView1内にあるばあいTextBox1、TextBox2が見当たらないみたいで
宣言させていませんと怒られます。

構成はMultiView1、View1にGridView選択で
View2へ移動させてFormViewを表示させて頂いております。

分かる方宜しくお願い申し上げます

A 回答 (4件)

この回答への補足

お返事有難うございます

このページは当方も確認済みでC#からVBへの変換ツールを使用して実装しましたが不可でした
そのときのコードは破棄してしまいましたが不可能でした

ずっと悩んでいた問題で解決すればぐっと広がるのですが何とか解決に導いていただければ幸いです
なにとぞ宜しくお願い申し上げます

補足日時:2011/05/11 12:28
    • good
    • 0

## FormViewは使っていないし試せる環境がないのでどんな名前を指定するのかはわかりませんけど



>FormView1内にあるばあいTextBox1、TextBox2が見当たらないみたいで
FormView1の外にあるボタンからみると、FormView1しか見当たらないので
FormView1.TextBox1とかしないとだめでしょう。

#1のかたがつけておられるQ/Aをみたら、
FormView.Row.FindControl("TextBox2")
としてもよさそうですけど、
FormView1.まで入力したら候補がならんででてきませんか?
(たぶん、その中から選んだほうが早いかと。)
    • good
    • 0

No.2の回答は的外れです。


ASP.NETのFormViewは、その内部のコントロールまで、オブジェクト階層で指定できません。

No.1のonos師匠の回答が正しいです。VB.NETふうに書くと、

Dim TextBox1 as TextBox
TextBox1 = DirectCast(FormView1.Row.FindControl("TextBox1"), TextBox)
' TextBox1 = Ctype(FormView1.Row.FindControl("TextBox1"), TextBox) でもおK

でTextBox1が参照できます。

この回答への補足

お返事有難うございます

おそらく無事参照できましたが形が変わってしまい思うような計算が出来ません
その後どのようにすれば計算できますか?

補足日時:2011/05/12 14:59
    • good
    • 0

> おそらく無事参照できましたが形が変わってしまい思うような計算が出来ません


> その後どのようにすれば計算できますか?

Dim TextBox1 as TextBox
TextBox1 = DirectCast(FormView1.FindControl("TextBox1"), TextBox) 'Rowはあってもなくても同じです

で、TextBox1.Textで入力値が取得できるのでは?

(注意)
FormViewはデータバインド系のコントロールなので、何らかのデータソースをBindしてやらないと、内容が実体化しませんが、その点は大丈夫ですよね?
GridViewで取得されたIDをもとにDataSourceを取得してDataBindするなりしていますか? ということです。
もしNoであれば、上記TextBox1はNothingになり(=FormView内に存在しない)、そのTextプロパティを求めると例外が発生します
    • good
    • 0
この回答へのお礼

有難うございます
下記にて実行できました

本当に助かりました有難うございますm(__)m

Protected Sub FromView1_Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim TextBox1 As TextBox
Dim TextBox2 As TextBox
Dim intnyuukin As Integer
Dim intsiharai As Integer
Dim intgoukei As Integer

TextBox1 = DirectCast(FormView1.Row.FindControl("TextBox1"), TextBox)
TextBox2 = DirectCast(FormView1.Row.FindControl("TextBox2"), TextBox)
TextBox3 = DirectCast(FormView1.Row.FindControl("TextBox3"), TextBox)

intnyuukin = Val(TextBox1.Text)
intsiharai = Val(TextBox2.Text)

intgoukei = intnyuukin - intsiharai

TextBox3.Text = intgoukei


End Sub

お礼日時:2011/05/13 11:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!