Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 查找和循环标签_Asp.net_Vb.net - Fatal编程技术网

Asp.net 查找和循环标签

Asp.net 查找和循环标签,asp.net,vb.net,Asp.net,Vb.net,正在运行VS 2013 VB.net 我的aspx页面上有3个标签,分别为label1、label2和label3 我想循环遍历代码中的每一个,并为它们赋值 这是我的密码 Dim X As Integer = 1 For Each obj In values Dim myLabel As Label myLabel = TryCast(Me.FindControl("Label" + X), Label) myLabel.Text = Math.Round(obj,

正在运行VS 2013 VB.net

我的aspx页面上有3个标签,分别为label1、label2和label3

我想循环遍历代码中的每一个,并为它们赋值

这是我的密码

Dim X As Integer = 1

For Each obj In values

    Dim myLabel As Label
    myLabel = TryCast(Me.FindControl("Label" + X), Label)
    myLabel.Text = Math.Round(obj, 2)

    X = X + 1

Next
我知道只有3个obj,所以x总是在1到3之间。当我得到以下信息时,我做错了什么

从字符串“Label”到类型“Double”的转换无效

如果我将(“标签”+x)更改为(“标签1”),我会得到

对象引用未设置为对象的实例


在下面的一行中。

如果要连接不进行计算的字符串,则在VB.NET中使用
&
而不是
+
(与C相反)。因此,这应该是可行的:

myLabel = TryCast(Me.FindControl("Label" & X), Label)
您还应该毫无例外地将
选项Strict
设置为
On
。然后,您首先必须修复许多编译器错误,但这将有助于编写更健壮的代码。这也不会编译:

myLabel.Text = Math.Round(obj, 2)
因为
Math.Round
返回一个
Double
标签。Text
是一个
字符串。您只需要使用
Math.Round(obj,2).ToString()
来修复它

以下是使用
Linq
获取标签的不同方法:

Dim myLabels = From lbl In Me.Form.Controls.OfType(Of Label)()
               Where lbl.ID.StartsWith("Label")
For Each lbl As Label In myLabels
    ' ... '
Next

另外,由于您使用
TryCast
在使用变量之前检查它-如果它不进行强制转换,它将一文不值

myLabel = TryCast(Me.FindControl("Label" & X.ToString), Label)
If myLabel IsNot Nothing Then
  'safe to use variable here
End If

你在连接吗?这不应该是“Label”&X)我仍然在“mylabel.text=”行中得到“Object reference not set to a instance of a Object”。mylabel也显示为nothing@user2050577:可能这些标签不在页面顶部,而是在另一个容器控件中,例如
GridView
UserControl
,或者您正在使用母版页。这些标签在一个表中。@user2050577:什么类型的表,html表格或ASP.NET
表格
-类或
网格视图
(也呈现为表格)?它们位于html表格中