2016-06-26 64 views
-2

アイテムテンプレートを作成し、(ラベル1)Gridviewに追加しました。ラベルのテキストはデータベースからデータバインドされます。私は私が後で'System.Web.UI.WebControls.Label'タイプを 'string'に暗黙的に変換できません

string name = row.Cells[1].FindControl("Label1") as Label; 

を使用する文字列内の行の各ラベルのテキストを取得しようとしましたが、エラーがあります:あなたが保存しようとしているあなたのコードで

(Cannot implicitly convert type 'System.Web.UI.WebControls.Label' to 'string') 
+1

'System.Web.UI.WebControls.Label'は' STRING'ではありませんが、使用して

try { string name = ((Label)row.Cells[1].FindControl("Label1")).Text; } catch(Exception ex) { //log it } 

(OR)のようなTextプロパティ値です取得したいですあなたに言う。 'Label'の' Text'プロパティは 'string'という名前で呼び出す必要があります。 Label lbl = row.Cells [1] .FindControl( "Label1")をLabelとして使用します。 if(lbl!= null){name = lbl.Text; } ' – Tim

+0

エラー:割り当てられていないローカル変数 'name'の使用 –

+0

' string name; 'を' string name = String.Empty; 'に変更します。 – Tim

答えて

3

Labelは対照である。あなたはそれがエラーメッセージとしてasオペレータ

Label lbl = row.Cells[1].FindControl("Label1") as Label; 
if(lbl != null) 
string txt = lbl.Text; 
+0

コントロールが見つからない場合、これは例外をスローしませんか? – Tim

+0

私はちょうど@Tim –

+0

@Tim、そうだと言っていましたが、OPでは 'try .. catch'をラップするか、' as'演算子を使ってキャストして無効にすることはできませんこれを使って。彼に何が間違っているのかを示す私の唯一の目的 – Rahul

1
Label label = row.Cells[1].FindControl("Label1") as Label; 

は、それはとして、これは間違いなくそうではありません。

string text = label.Text; 

textは、このラベル内のテキストを保持する変数です。

+0

'Label1'が見つからなければ例外をスローします。 'Try/Catch'でこれをラップし、エラーで何かをする必要があります。明らかにしない限り、あなたは 'Label1'が存在することは間違いありません。 –

+0

'string text = label.Text();'はコンパイラエラーをスローします。 'Text'はプロパティで、メソッドのように使用しようとしています。 'string text = label.Text;'は正しいです。 – Tim

+0

@RahulKishore - 'as'は例外をスローしません。キャストに失敗した場合はnullを返します。 – Tim

関連する問題