2011-01-07 13 views
1

私はページ内のコントロールを見つけようとしています。 Idはこれは私が間違っているところ FindControl in Asp.Net

Dim taskId As HtmlInputCheckBox 
i =10 
taskId = Me.FindControl("chkTaskOption_" + i) 
taskId.Checked = True 

は、いずれかを教えてもらえます「倍増する文字列を変換することができません」例外をスローサーバーコントロール(チェックボックス) として利用可能です。

答えて

3

あなたの問題は、あなたがVB.NETで2つの文字列を連結する&の代わり+を使用する必要があるということです。 this questionへの回答では、この程度の良い議論があります、さらに読書のために

taskId = Me.FindControl("chkTaskOption_" & i) 

:この行を変更します。

+0

私はそれがキャストノーだとかなり確信していますか?申し訳ありません、 "double"の部分を見たところ – jcolebrand

+0

文字列の部分が解決されたら、CheckedをTrueに設定するためのキャストが必要です。 –

+0

VB.NETは実際には上記の状況で明示的な型変換を必要としません - 実際にHtmlInputCheckBox(またはその派生型)が見つかったコントロールであれば問題ありません。彼は正しいタイプのローカル変数にCheckedプロパティを設定しているので、その行にエラーはありません。 – patmortech

2

FindControlから返された型のキャストが不足している可能性があります。あるいは、変数iに対して。私はVB.netがあなたのために変換するかどうか覚えていません。

i =10 
Dim taskId As HtmlInputCheckBox 
taskId = CType(Me.FindControl("chkTaskOption_" & i.ToString()), HtmlInputCheckBox) 
taskId.Checked = True 
+0

VB.NETはC言語のAS構文をサポートしていますか?また、HtmlInputCheckBoxの代わりにCheckBoxを使うこともできます。 – jcolebrand

+0

修正を加えましたが、patmortechにはそれがあります。それを自分で見なければならなかった。 –

+0

こんにちはshewitt:これも正しいですが、タイプキャストの必要はありません。 – selvaraj