【问题标题】:FindControl in Asp.NetAsp.Net 中的 FindControl
【发布时间】:2011-01-07 04:37:10
【问题描述】:

我正在尝试在页面中查找控件。 Id 可用作服务器控件(复选框) 这会引发异常“无法将字符串转换为双精度”

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

谁能告诉我哪里错了。

【问题讨论】:

    标签: asp.net vb.net findcontrol


    【解决方案1】:

    您的问题是您需要使用& 而不是+ 来连接VB.NET 中的两个字符串。更改此行:

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

    为了进一步阅读,this question 的答案中对此进行了很好的讨论。

    【讨论】:

    • 我很确定是演员表不?抱歉,刚刚看到“双”部分
    • 一旦字符串部分被解析,我确信需要强制转换才能将 Checked 设置为 True。
    • VB.NET 在上述情况下实际上并不需要显式类型转换——只要它找到的控件实际上是 HtmlInputCheckBox(或它的一些派生类),它就可以正常工作。他在他的局部变量上设置了 Checked 属性,该变量是正确的类型,所以该行不会有错误。
    • 除非您打开了 Option Strict,否则(默认情况下不是这样)。然后你需要显式转换。
    【解决方案2】:

    您可能只是缺少从 FindControl 返回的类型的转换。或者在变量 i 上。我不记得 VB.net 是否会为您转换。

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

    【讨论】:

    • VB.NET 是否支持 C# 支持的 AS 语法?我认为你也可以使用 CheckBox 而不是 HtmlInputCheckBox ...
    • 添加了一个修复,不过 patmortech 有。必须自己查。
    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2012-11-21
    • 2012-10-31
    相关资源
    最近更新 更多