- PR -

DataGridテンプレート列にTextBoxを配置したが値を取得できない

1
投稿者投稿内容
たかひろ
会議室デビュー日: 2002/08/06
投稿数: 8
投稿日時: 2002-08-19 20:10
こんにちは。
2度目の投稿になります。

DataGridのテンプレート列の「ItemTemplate」欄に TextBoxを配置しました。
デフォルト値として Textプロパティに「0」を入れてあります。

さて、ユーザーにWeb上でこのTextBoxに数値を入力してもらい
同じくWeb上に配置した「送信」ボタンのクリックイベント内で
この数値を取得しようとしたのですが
デフォルト値の「0」が返ってくるのです。
ユーザーが入力した数値がTextBoxコントロールに反映されていないようなのです。

どなたかDataGridに詳しい方、解決方法を教えて下さい。

---------------------------------------------------
Dim TmpTextBox as TextBox
Dim InputVal as Integer

For i = 0 To DataGrid1.Items.Count - 1
'ここで、テンプレート列内のコントロール「TextBox1」を取得し、TextBoxに変換している
TmpTextBox = CType(DataGrid1.Items(i).FindControl("TextBox1"), TextBox)
InputVal = CLng(TmpTextBox.Text)
Next

----------------------------------------------------------

よろしくお願いします。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-08-20 04:26
TemplateColumnに配置したTextBoxの値を取得するには
DataGridのOnUpdateCommandイベントで取得します。

コード:
Sub myDataGrid_UpdateCommand(s As Object, e As DataGridCommandEventArgs)       
 
  Dim txtAmount As TextBox = CType(e.Item.FindControl("txtAmount"), TextBox)  
  Dim intAmount As Integer = Int32.Parse(txtAmount.Text) 

End Sub



Happy Programming!
Akio Kasai
たかひろ
会議室デビュー日: 2002/08/06
投稿数: 8
投稿日時: 2002-08-20 15:34
返答ありがとうございました。

よくよくコードを見返してみると
Webフォームのロードイベントに

If Not IsPostBack Then・・・
の記述が抜けていました。

よって、「送信」ボタンクリック時に
DataGrid内の値が再度初期化されてしまっていたようです。

お騒がせして済みません。
1

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