2009-07-29 4 views
1

Я хочу добавить пользовательские типизированные свойства в webcontrol, например EditRowStyle в GridView, но так, чтобы свойства свойства могли быть объявлены в представлении Source в ascx/aspx. Понятно, что GridView не обладает таким свойством, как EditRowStyle-BackColor, но имеет только EditRowStyle. Что-то вроде этого:Как добавить пользовательские свойства к настраиваемому webcontrol

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

Почему у вас не может быть только свойство CssClass в MyCustomGrid? Затем он будет работать и может быть назначен с помощью атрибута CssClass в разметке. Я бы просто добавил свойства в MyCustomGrid один за другим, не помещал их в другой класс.

+0

Выявление всей теории этого потребует много времени, и вопрос не в этом, а в том, что, как это сделали ребята из Microsoft. А также мне любопытно. – misnyo

Смежные вопросы