• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FormViewRowプロパティで値取得)

VWD2005 + ASP.NETでWebページ作成中で行きづまっています

このQ&Aのポイント
  • Webフォーム上に配置したFormView 内を編集し、 EditItemTemprate 内TextBoxの値(数値の場合と文字の場合がり)取得をVBのコードで取得したいのですが御教授ください。
  • FormView1.Row.FindControl("TextBox") の部分が型'System.Web.UIControl'の値を'Integer'に変換できません。とエラーになります。
  • 質問の内容はVWD2005 + ASP.NETを使用してWebフォーム上のFormView内でEditTextの値をVBのコードで取得する方法についてです。具体的には、EditItemTemplate内のTextBoxコントロールに入力された値を取得したいというものです。しかし、FormView1.Row.FindControl("TextBox") の部分でエラーが発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • onos
  • ベストアンサー率81% (127/155)
回答No.1

エラーの意味は理解できてます? FormView1.Row.FindControl("TextBox") この記述で取得できるのはTextBoxコントロールです。 いや、正確にいうとTextBoxコントロールの基底クラスの System.Web.UIControl になるのかな? で、UIControlをIntegerに変換は、、、できないですよね。 CTypeに渡したいのはTextBoxのTextプロパティの値なんじゃないですかね。 だとしたらFindControlでとりだしたUIControlをTextBoxコントロールに変換したうえで、そのTextプロパティの値を見るようにプログラムを記述する必要があると思います。

ark2004
質問者

お礼

ありがとうございます。 解りました、以下記述で取得できました。 ただ、 Me.FormView1.DataBind()を実行してからでないと取得できませんでした。 更に、データが存在するか否か確認が必要でした。   以下のコードを理解できませんが(不要なものもあるかと) '件数取得処理 Dim cnt As Long 'SqlDataSource データ件数取得 Dim dv As DataView = CType(SqlDataSource1.Select(DataSourceSelectArguments.Empty), DataView) If cnt = 0 Then    'エラーメッセージ処理   Exit Sub End If Me.TextBox1.Text = (CType(FormView1.FindControl("CDLabel"), Label)).Text '#Selectedイベントを作成 sqlDataSourceデータ件数を把握使用 Protected Sub SqlDataSource_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected cnt = e.AffectedRows End Sub そして、以下の文で取得可能でした。 ※FormView1が私の場合DefaultMode =Readonly なので ItemTemplate参照でした。 Me.TextBox1.Text = (CType(FormView1.FindControl("CDLabel"), Label)).Text

関連するQ&A