2011-06-29 45 views
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(); 


     } 

有沒有其他的方法可以讓我循環所有標籤併爲其分配文本?

+0

你忘了增加計數器:我++ – Jayesh

回答

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** 

把那一個鏡頭。希望它的作品了

+0

看樣子像它應該爲我工作。讓我試試看,並會更新它的過程。感謝您的回覆。 – user648610

0

如果你在一個容器中有他們,我覺得你可以做這樣的事情如下:

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

我只在Silverlight試過這種但是,所以我不知道它的工作原理,或者如果將它們全部放入容器中對您來說是實用的。

+0

把它們放在容器中對我來說不實際。感謝您的回覆。 – user648610

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