2013-09-16 76 views
0

我已經有一段時間沒有編碼了,所以我試圖從usercontrols中獲取動態添加的屬性。如何訪問動態創建的用戶控件的屬性?

我已經創建了這個代碼,但想知道這是一個好方法,還是有另一種更好的方式來找出添加的usercontrols?

if (PlaceHolder1.HasControls()) 
{ 
    foreach (Control uc in PlaceHolder1.Controls) 
    { 
     if (uc.GetType().Name.ToLower() == "spinner_ascx") 
     { 
      Label1.Text += ((Spinner)c).Name + "<br />"; 
     } 
    } 
} 
+0

以防萬一,你加RUNAT =「server」屬性的dymnamically創建元素? –

回答

3

你並不需要比較的名稱,如果你已經知道該控件的類型:

if (PlaceHolder1.HasControls()) 
{ 
    foreach (Control uc in PlaceHolder1.Controls) 
    { 
     if (uc is Spinner) 
     { 
      Label1.Text += ((Spinner)uc).Name + "<br />"; 
     } 
    } 
} 

但是,是的,如果你想訪問Name和名稱是隻在一個屬性Spinner類,則需要將其轉換爲適當的對象。

如果您創建了這些用戶控件,最好的辦法是確保它們都從基類繼承,例如

public abstract class MyControl : UserControl { 
    public string Name {get;set;} 
} 

public class Spinner : MyControl { 

} 

這樣,你不需要測試每次用戶控件想要的,只是父類:

if(uc is MyControl) { 
    Label1.Text += ((MyControl)uc).Name + "<br />"; 
} 
+0

@SriramSakthivel好點,更新 – CodingIntrigue

+0

現在這看起來不錯 –

相關問題