Прокручивайте метки страницы, чтобы назначить текст - PullRequest
0 голосов
/ 29 июня 2011

На моей странице aspx есть около 20 ярлыков, для которых идентификаторы 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 голосов
/ 29 июня 2011

Если у вас есть их в контейнере, я думаю, вы можете сделать что-то вроде этого ниже:

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

Однако я пробовал это только в серебряном свете, поэтому я не уверен, что это сработает, или если в вашем случае целесообразно поместить их все в контейнер.

0 голосов
/ 29 июня 2011

Я использовал это в прошлом, и я только что проверил это.

Вы можете сделать это, потому что каждая страница имеет форму

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");
0 голосов
/ 29 июня 2011

Один из способов сделать это - использовать метод 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**

Дайте этому шанс. Надеюсь, это сработает

...