循环遍历页面标签以指定文本

时间:2011-06-29 15:54:03

标签: asp.net text loops labels

我的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();


         }

是否有其他方法可以循环遍历所有标签并为其指定文本?

3 个答案:

答案 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");