2011-01-10 70 views
1

如何編寫C#代碼(aspx)以用某些默認屬性值初始化用戶控件?我的意思是哪裏/哪個事件?我有一個用戶控件,它具有綁定在容器頁面上的gridview。在容器頁面的頁面加載中,我綁定了數據。我試圖在initproperties中編寫初始化代碼,但它不起作用。請建議我在哪裏設置我的用戶控件的默認值?在數據綁定之前初始化usercontrol屬性的位置?

編輯: 正如DOK建議..我已經有一個屬性,我改變其中一個DIV的寬度。這是不工作的代碼。

public int CollapsiblePanelWidth 
    { 
     set 
     { 
      if (DataDiv.Attributes["style"] != null) 
      { 
       if (DataDiv.Attributes["style"].Contains("width:")) 
       { 
        string[] array = DataDiv.Attributes["style"].Split(new char[] { ';' }); 
        array = Array.FindAll(array, ContainsWidthAttribute); 
        string result = ""; 
        foreach (string s in array) 
        { 
         result += s + "; "; 
        }     
        DataDiv.Attributes["style"] = result + " width: " + Convert.ToString(value != null ? value : COLLAPSIBLEPANELWIDTH) + "px;"; 
       } 
       else 
       { 
        DataDiv.Attributes["style"] += " width: " + Convert.ToString(value != null? value:COLLAPSIBLEPANELWIDTH) + "px;"; 
       } 
      } 
      else 
      { 
       DataDiv.Attributes.Add("style", "width: " + Convert.ToString(value != null ? value : COLLAPSIBLEPANELWIDTH) + "px;"); 
      } 
      GridView1.Width = Unit.Parse(Convert.ToString(value != null ? value : COLLAPSIBLEPANELWIDTH - 2)); 
     } 
    } 

這隻適用於在調用程序時設置寬度。否則,不會添加style="width: 105px;"的默認值。

+0

ASP.NET,對不對? – 2011-01-10 19:37:53

+0

哎呀..是的請! – 2011-01-10 19:38:37

+0

好,因爲每次回發時都會調用它,爲什麼不直接在If(Page.IsPostBack)下的父窗體的page_load下寫它? – Pabuc 2011-01-10 21:43:44

回答

2

基本上你想要的是虛擬屬性CollapsiblePanelWidth,它只是處理獲取寬度或返回默認值,如果它沒有被設置。

然後在您的UserControl的override void OnPreRender(EventArgs)方法中執行您的樣式設置代碼。

編輯:這樣的事情應該是足夠

public MyUserControl() 
{ 
    CollapsiblePanelWidth = 105; 
} 

public int CollapsiblePanelWidth { get; set; } 

protected override void OnPreRender(EventArgs e) 
{ 
    DataDiv.Style[HtmlTextWriterStyle.Width] = CollapsiblePanelWidth.ToString(); 
    GridView1.Width = CollapsiblePanelWidth - 2; 

    base.OnPreRender(e); 
} 
0

如何創建UserControl的屬性並給它們一個默認值?這些屬性將在UserControl初始化時設置,您可以在代碼中更改它們。

您可以指定對公共或私人或受保護的屬性的訪問權限。然後,您可以從父級更改公共屬性。

也許你可以改變你的代碼,直到你現有的屬性工作。消除它是代碼問題的可能性,而不是屬性本身。讓物業工作,然後讓它做一些複雜的事情。

相關問題