我的aspx页面上有20个标签,ID为lbl1,lbl2 .... lbl20,文本由SqlServer表驱动。有没有简单的方法来遍历页面上的所有标签并向读者提供文本。 我做了一些事情,但它不起作用。
SqlDataReader Reader = new SqlDataReader();
int i = 0;
while(Reader.read())
{
label lbl = new label();
lbl.ID = "label" + i;
lbl.text = Reader["ColumnName"].ToString();
}
是否有其他方法可以循环遍历所有标签并为其指定文本?
答案 0 :(得分:0)
执行此操作的一种方法是使用findcontrol方法。这样可以正常工作,因为所有标签都以“lbl0”,“lbl1”...约定命名。
**开始循环:
int index = 0;
string currentLabel = "lbl" + index.ToString();
index++;
Control myControl1 = FindControl(currentLabel);
// cast control to type: (label)
// apply text from reader**
试一试。希望它成功
答案 1 :(得分:0)
如果你把它们放在容器中,我想你可以在下面做这样的事情:
For Each lbl As Control In Grid1.Children
If TypeOf lbl Is Label Then
'your logic
End If
Next
我只在Silverlight中试过这个,所以我不确定它是否有效,或者将它们全部放在容器中对你来说是否实用。
答案 2 :(得分:0)
我过去曾经使用过它,我只是测试了它。
您可以这样做,因为每个页面都有一个表单
HtmlForm form1 = (HtmlForm)Page.FindControl("ContentPlaceHolder1");
for (int i = 1; i <= 3; i++) {
((TextBox)form1.FindControl("label" + i)).Text = "This is label number " + i;
}
如果您有母版页,请将第一行更改为此
ContentPlaceHolder ph = (ContentPlaceHolder)Page.FindControl("ContentPlaceHolder1");