2009-03-13 5 views
0

J'ai un contrôle composite qui possède un grand nombre de propriétés qui peuvent être utilisées pour le style du contrôle. Je veux regrouper ces propriétés tout en maintenant certaines des propriétés dans ViewState Le balisage du contrôle devrait ressembler à ceci:

Comment stocker des propriétés CompositeControl imbriquées dans ViewState

<cc:Test id="test"> 
    <Toolbar Items="add,delete" Enabled="true" /> 
    <Grid Enabled="true" AllowSort="true" AllowFilter="true" /> 
</cc:Test> 

Mon code ressemble à ceci

<ParseChildren(true)> <PersistChildren(true)> _ 
Public Class Test Inherits CompositeControl 

    Private _grid As New GridStyle(); 
    <PersistenceMode(PersistenceMode.InnerProperty)> _ 
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _ 
    Public ReadOnly Property Grid As GridStyle 
     Get 
      Return _grid; 
     End Get 
    End Property 
End Class 

Public Class GridStyle 
    private _allowFilter As Boolean = False; 
    Public Property AllowFilter As Boolean 
     Get 
      Return _allowFilter 
     End Get 
     Set(value As Boolean) 
      _allowFilter = value 
     End Set 
    End Property 
End Class 


ViewState est pas accessible depuis la classe GridStyle alors comment pourrais-je maintenir l'état de la propriété AllowFilter dans le ViewState?

Répondre

1

Dans votre contrôle personnalisé (ou faire des emballages pour les contrôles standards utilisés dans un contrôle personnalisé) vous devez passer outre SaveViewState et LoadViewState

Ceci est bien documenté sur MSDN et le web en général

Questions connexes