0

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


         }

有没有其他方法可以让我遍历所有标签并为其分配文本?

4

3 回答 3

0

如果您将它们放在容器中,我认为您可以执行以下操作:

For Each lbl As Control In Grid1.Children
  If TypeOf lbl Is Label Then
    'your logic
  End If
Next

但是,我只在silverlight中尝试过,所以我不确定它是否有效,或者在您的情况下是否将它们全部放入容器中是否可行。

于 2011-06-29T16:21:24.640 回答
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");
于 2011-06-29T17:40:39.030 回答
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**

试一试。希望能成功

于 2011-06-29T16:00:32.363 回答