2016-09-14 23 views
0

私は、ほとんどのdivが動的に作成されるasp.net/vb.netのページで作業しています。さらに、動的に挿入されたHtmlTextAreas、TextBoxesなどを使用してコンテンツを編集したいと考えています。divで動的に作成されたコントロール(TextBox)を見つけよう

私はすでにこのすべてを作成しています。すべてのdivをパネルに挿入し、ユーザーが編集ボタンをクリックすると、divが再読み込みされ、アイテム(例:TextBoxes)で埋められます。保存するには、各divをループしてアイテムを見つけようとしています。今私が持っている唯一の問題は、何とか私は動的に挿入されたアイテムを見つけることができないということです。

For Each control As HtmlGenericControl In panel.Controls 
'do something like this: 
'Dim textBox As New TextBox = control.FindControl("myTextBox") 
Next 

は、私はすでにいくつかのオプションを試してみたが、残念ながら成功せず、私はMasterpagesを使用してい

(テキストボックスは常に何もありません)ので、私はこれを試してみました:

Dim MainContent As ContentPlaceHolder = TryCast(Page.Master.FindControl("ContentPlaceHolder"), ContentPlaceHolder) 
Dim textBox As TextBox = DirectCast("myTextBox" & intCount.ToString(), TextBox) 

がいずれかでありますこれを行う方法?

時間と労力ありがとう! :)

答えて

0

あなたの鋳造には注意が必要です。コントロールオブジェクトのコレクションを持っている場合は、それらをすべてテキストボックスにキャストできません(つまり、ラベルは変換できず、例外がスローされます)。

あなたは使用してコントロールを見つけることができます。

For Each textbox As TextBox In panel.Controls.OfType(of TextBox) 
    ... interact here 
Next 

Dim textBox As TextBox = DirectCast("myTextBox" & intCount.ToString(), TextBox) 

はあなたが変換しようとしている。このラインでは:あなたが使用することができ、すべてのテキストボックスをループする

Dim textbox as TextBox = CType(control.FindControl("myTextBox"), TextBox) 

文字列を動作しないTextBoxに変換します。 FindControlを使用して取得する必要があります。

+0

ありがとうございます。再度検索した後、私は要素を正確に再計算していないことに気がつきました。そのため、コントロールは読み込まれません。コードは正常に動作しています。 –

関連する問題