2009-07-29 192 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