【问题标题】:FormView FindControl not able to convert ToInt32FormView FindControl 无法转换 ToInt32
【发布时间】:2012-09-22 02:52:14
【问题描述】:

我有一个接受整数参数的类 Cust_Result。

所以在我的主页加载时,我绑定了一个表单视图来显示我检索到的数据。现在我想提取我的“id”标签的值并将其分配给我可以传递给我的 Cust_Result 类的变量,但我一直收到这个错误

“无法将 'System.Web.UI.WebControls.Label' 类型的对象转换为 输入“System.IConvertible”。”

我假设这是因为我试图将字符串值发送到需要整数值的参数,但我不确定如何进行转换。

我的代码

 int cust;

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    您需要一个要转换的字符串,这就是 Label.Text 属性(不仅仅是标签)。

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

    Label lbl = FormView1.Row.FindControl("ID") as Label;
    // option to bail out when lbl == null 
    cust = Convert.ToInt32(lbl.Text);
    

    【讨论】:

    • 感谢您的帮助,感谢您在允许时接受帮助
    【解决方案2】:

    首先将控件转换为Label

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

    然后就可以获取标签中的值了:

    var cust = int.Parse(label.Text);
    

    【讨论】:

      【解决方案3】:

      仔细查看编译器错误 - 它没有说明 stringint - 它在谈论 IConvertibleLabel - 尽管它提到了 Label 而不是 Control表明这不是您实际发布的代码。 Convert.ToInt32 不知道如何处理 ControlLabel - 在这种情况下,我相信您想要标签的 text,所以我会写这个:

       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 并不能真正解释它的结果是什么

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        • 1970-01-01
        • 2013-09-22
        • 2014-09-17
        • 1970-01-01
        相关资源
        最近更新 更多