如何使用循环更改多个标签的文本

时间:2014-01-07 22:53:33

标签: asp.net vb.net

我正在尝试更改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_。这是因为我使用了一个母版页,这就是它存在的原因。

有人可以帮忙吗?

1 个答案:

答案 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来读取数据。您的代码将以更快的速度执行。