我正在尝试更改asp.net网络表单中的标签。我的标签ID是lbl1,lbl2,lb3等。
con.Open()
For i = 1 To 6
SQL = "SELECT Question FROM Question WHERE TestID=" & Session("TestID") & " AND QuestionID=" & Convert.ToString(i) & ";"
Dim cmd As New OleDbCommand(SQL, con)
Dim myControl As Control = FindControl("ContentHolder_" & "lbl" & Convert.ToString(i))
myControl.Text() = cmd.ExecuteScalar
Next
con.Close()
这显然不起作用.Text不是myControl的属性。 我无法解决如何解决这个问题。
P.S。我在google chrome中检查了标签的元素,发现它在我给出的元素id之前有ContentHolder_。这是因为我使用了一个母版页,这就是它存在的原因。
有人可以帮忙吗?
答案 0 :(得分:0)
Control
是所有类型的webform控件的基类。您需要使用您正在使用的特定类型的控件。例如,如果它是<asp:Label>
控件,则需要使用Label
类型而不是Control
类型。像这样:
Dim myControl As Label = CType(FindControl("ContentHolder_" & "lbl" &
Convert.ToString(i)), Label)
myControl.Text = "whatever"
但是,您的代码还有第二件事。您将SQL查询放在循环中。您应该始终尝试减少到数据库的往返次数。在这种情况下,这意味着更改您的代码以查询数据库一次,然后使用OleDbDataReader
来读取数据。您的代码将以更快的速度执行。