2009-12-31 7 views
1

Je crée un contrôle personnalisé comme une sorte de wrapper pour un plugin jQuery populaire. Cependant, je suis nouveau dans les contrôles personnalisés et j'ai un peu de mal avec la façon dont les choses fonctionnent et j'ai peur de ne pas en savoir assez pour correctement formuler mes recherches sur Google.ASP.NET Custom Control XML

Je dois avoir le contrôle d'une certaine manière dans le XML d'ASP.NET pour faciliter l'utilisation plus tard. En ce moment, il ressemble à ceci:

<js:jsTree ID="what" runat="server"> 
    <jsTreeNode ID="node_1" Title="node_1v" runat="server" /> 
    <jsTreeNode ID="node_2" Title="node_2v" runat="server" /> 
    <jsTreeNode ID="node_3" Title="node_3v" runat="server"> 
     <jsTreeNode ID="subnode_1" Title="subnode_1v" runat="server" /> 
     <jsTreeNode ID="subnode_2" Title="subnode_2v" runat="server" /> 
    </jsTreeNode> 
</js:jsTree> 

Je veux que ça ressemble à:

<js:jsTree ID="what" runat="server"> 
    <Types> 
     <js:Type ID="default" Rules="whatever" runat="server" /> 
    </Types> 
    <Nodes> 
     <js:TreeNode ID="node_1" Title="node_1v" runat="server" /> 
     <js:TreeNode ID="node_2" Title="node_2v" runat="server" /> 
     <js:TreeNode ID="node_3" Title="node_3v" runat="server"> 
     <js:TreeNode ID="subnode_1" Title="subnode_1v" runat="server" /> 
     <js:TreeNode ID="subnode_2" Title="subnode_2v" runat="server" /> 
     </js:TreeNode> 
    </Nodes> 

Que puis-je faire pour la mise en page des objets afin qu'ils apparaissent de cette façon? Quelqu'un peut-il me pointer à un tutoriel où quelqu'un a fait quelque chose de similaire?

Merci!

Répondre

2

C'est certainement possible!

La classe de contrôle jsTree doit avoir deux propriétés de collection sur elle:

[PersistenceMode(PersistenceMode.InnerProperty)] 
public TypeCollection Types { 
    get { 
     if (_types == null) { 
      _types = new TypeCollection(); 
     } 
     return _types; 
    } 
} 
[PersistenceMode(PersistenceMode.InnerProperty)] 
public NodeCollection Nodes { 
    get { 
     if (_nodes == null) { 
      _nodes = new NodeCollection(); 
     } 
     return _nodes; 
    } 
} 

Et puis le type TreeNode doit avoir une propriété similaire (mais légèrement différente):

[PersistenceMode(PersistenceMode.InnerDefaultProperty)] 
public NodeCollection Nodes { 
    get { 
     if (_nodes == null) { 
      _nodes = new NodeCollection(); 
     } 
     return _nodes; 
    } 
} 

Espérons que cette est suffisant pour vous faire partir. Ce n'est évidemment pas un échantillon de code complet mais je préfère ne pas répéter les choses que vous connaissez déjà!

+0

C'est exactement ce que je cherchais! Je vous remercie! –