2009-07-29 142 views
1

我想將自定義類型的屬性添加到Web控件,例如GridView中的EditRowStyle,但是可以在ascx/aspx的源視圖中聲明該屬性的屬性。很顯然,GridView沒有像EditRowStyle-BackColor這樣的屬性,但只有EditRowStyle。事情是這樣的:如何將自定義屬性添加到自定義Web控件

public class MyCustomGrid : GridView 
{ 
    [...] 
    private MyCustomSettings customSettings; 
    public MyCustomSettings CustomSettings 
     { 
      get { return customSettings; } 
     } 
    [...] 
} 

public class MyCustomSettings 
{ 
    private string cssClass = "default"; 
    public string CssClass 
    { 
    get { return cssClass; } 
    set { cssClass = value; } 
    } 
} 

和電網decalartion:

<c1:MyCustomGrid ID="grdCustom" runat="server" CustomSettings-CssClass="customcss" /> 

因爲該解決方案是行不通的。

回答

1
public class MyCustomGrid : GridView 
{ 
    [...] 
    private MyCustomSettings customSettings; 
    [PersistenceMode(PersistenceMode.InnerProperty),DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
    public MyCustomSettings CustomSettings 
     { 
      get { return customSettings; } 
     } 
    [...] 
} 

[TypeConverter(typeof(MyCustomSettings))] 
public class MyCustomSettings 
{ 
    private string cssClass = "default"; 
    public string CssClass 
    { 
    get { return cssClass; } 
    set { cssClass = value; } 
    } 
} 
0

爲什麼你不能在MyCustomGrid中擁有該CssClass屬性?然後它會工作,並可以通過標記中的CssClass屬性分配。我只是逐個添加屬性到MyCustomGrid,不要把它們放在另一個類中。

+0

揭示整個理論需要花費很多時間,問題不在於此,而在於微軟如何做到這一點。而且我很好奇。 – misnyo 2009-07-29 13:51:13