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属性(不仅仅是标签)。

我将它分为两​​个步骤:

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

首先将控件转换为Label

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

然后就可以得到标签中的值了:

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

仔细查看编译器错误 - 它没有说任何stringint- 它正在谈论IConvertibleLabel- 尽管它提到Label而不是Control暗示这不是您实际发布的代码的事实。Convert.ToInt32不知道如何处理 aControl或 a Label- 在这种情况下,我相信您想要标签的文本,所以我会这样写:

 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 意味着客户,我猜?)
  • 不要使用下划线
  • 尝试给出更有意义的名称——甚至CustomerResult没有真正解释它的结果什么。
于 2012-09-21T18:45:43.567 回答