1

整数パラメーターを受け入れるクラス Cust_Result があります。

したがって、ロード時にメインページで、取得したデータを表示するためにフォームビューをバインドします。ここで、「id」ラベルの値を抽出し、Cust_Result クラスに渡すことができる変数に割り当てたいと思いますが、このエラーが発生し続けます

「タイプ 'System.Web.UI.WebControls.Label' のオブジェクトをタイプ 'System.IConvertible' にキャストできません。」

整数値が必要なパラメーターに文字列値を送信しようとしているが、変換方法がわからないためだと思います。

私のコード

 int cust;

       cust = (Convert.ToInt32(FormView1.Row.FindControl("ID")));
4

3 に答える 3

1

変換する文字列が必要です。これがLabel.Textプロパティです (ラベルだけではありません)。

私はそれを2つのステップに分けます:

Label lbl = FormView1.Row.FindControl("ID") as Label;
// option to bail out when lbl == null 
cust = Convert.ToInt32(lbl.Text);
于 2012-09-21T18:43:37.807 に答える
1

最初にコントロールをラベルに変換します

var label = (Label)FormView1.Row.FindControl("ID");

次に、ラベルの値を取得できます。

var cust = int.Parse(label.Text);
于 2012-09-21T18:43:59.253 に答える
1

コンパイラエラーをよく見てください-それは何も言っていません-stringそしてint-それは話してIConvertibleいます-しかし、それが実際に投稿したコードではないことを示唆する代わりにLabel言及しているという事実。aまたは aをどうするかわかりません。この場合、ラベルのテキストが必要だと思うので、次のように書きます。LabelControlConvert.ToInt32ControlLabel

 Label label = (Label) FormView1.Row.FindControl("ID");
 // Potentially check for "label" being null here, i.e. the control wasn't found
 int cust = Convert.ToInt32(label.Text);

この値がどこから来たのかは完全には明らかではありませんが、int.TryParse代わりにConvert.ToInt32, を使用することも検討してください。

Cust_Resultまた、型にはまらない名前であることにも注意してください。次のことを試してください。

  • 略語は避けてください (Cust は Customer を意味すると思いますか?)
  • アンダースコアを使用しないでください
  • より意味のある名前CustomerResult付けてみてください。
于 2012-09-21T18:45:43.567 に答える