我正在尝试引用动态创建的标签的.Text属性,但无法找到方法。 如果我尝试引用label1.Text它不会让我,因为它尚未创建。
我正在尝试:
Page.FindControl("label" & i.ToString).Text
这也不起作用,尽管您可以通过这种方式访问控件的.ID属性。 有什么想法吗?
我正在使用Visual Studio Express 2012 For Web。
答案 0 :(得分:2)
FindControl返回System.Web.UI.Control
,其中没有.Text属性。您需要将其强制转换为Label。试试这个:
Dim label = DirectCast(Page.FindControl("label" & i.ToString()), Label)
label.Text = "foo"
答案 1 :(得分:0)
如果控件嵌套在其他控件中,则需要递归地找到它。 此外,您希望在使用Text属性之前将控件转换为Label控件。
这是一个帮助方法。它以递归方式搜索控件。
public static Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
return root;
return root.Controls.Cast<Control>()
.Select(c => FindControlRecursive(c, id))
.FirstOrDefault(c => c != null);
}
var myLabel = FindControlRecursive(Page, "label" + i.ToString) as Label;
if(myLabel != null)
{
myLabel.Text = "abc";
}