2009-06-17 3 views
0

Je vais avoir un répéteur utilisé comme une sorte de TagCloud Paging. Pour ce faire, j'ai ajouté des propriétés simples à la page ViewState comme une page, RowCount, etc ...Hériter un contrôle de serveur Web d'une manière simple?

Je me sens comme il ne appartient pas là mais j'ai eu de mauvaises expériences avec les contrôles serveur, le débogage, dll et le déploiement. Puis-je simplement hériter de la classe Repeater, ajouter quelques propriétés ControlState/ViewState et être capable de l'utiliser exactement comme un répéteur directement tiré de la boîte à outils?

Ici, ayant la classe simple suivante:

public class TagCloud : Repeater 
{ 
    public int selectedIndex; 

    public TagCloud() 
    { 
     selectedIndex = -1; 
     // 
     // TODO: Add constructor logic here 
     // 
    } 

    public int SelectedIndex 
    { 
     get { return selectedIndex; } 
     set { selectedIndex = value; } 
    } 
} 

Sans la création d'un nouveau projet de WebControlLibrary, ce fichier pourrait cs se trouve dans le dossier App_Code et travailler comme prévu?

Merci.

Répondre

0

Oui, cela ne pose aucun problème. Tant que vous utilisez la syntaxe de la propriété de contrôle:

RowCount public int
{

get { return (int) (ViewState["RowCount"] ?? 0); } 
    set { ViewState["RowCount"] = value; } 

}

En outre, pour rendre vos propriétés le même aspect que ceux par défaut, vous pouvez ajouter une description ou Attributs DefaultValue.

+0

Je sais comment déclarer les propriétés qui utilisent ViewState, s'il manque des attributs, c'est probablement au niveau de la classe puisqu'il n'y a pas de "TagCloud" dans ma boîte à outils. – maxbeaudoin

+1

Pour avoir votre contrôle personnalisé dans la boîte à outils, vous devez le créer dans un nouveau projet dll, puis l'ajouter à la boîte à outils via la propriété "Choisir les éléments". –

+0

Ight, merci +1, est-il un moyen de pouvoir l'utiliser comme ceci alors: sans l'avoir dans la boîte à outils et en utilisant le répéteur par défaut designer. – maxbeaudoin

0

Cela fonctionne, et est une façon suggérée de créer des contrôles serveur. Essayez-le et voyez.

+0

J'ai une classe TagCloud héritant de Répéteur ayant une propriété int simple. Je dois manquer des attributs car le contrôle ne semble pas être exposé dans la boîte à outils. J'aurais besoin du minimum requis pour le faire. – maxbeaudoin

0

L'héritage de l'ASP Repeater est une approche totalement valable, tant que le contrôle que vous construisez est un répéteur avec des propriétés supplémentaires. Si vous pensez que le contrôle dont vous avez besoin est en réalité «quelque chose d'autre» qui possède un répéteur dans le cadre de son ensemble de contrôle, alors vous devez probablement faire un contrôle composite qui ajoute un répéteur à sa collection de contrôle. quels que soient les autres contrôles nécessaires. Par exemple, vous voudrez peut-être avoir un contrôle qui a un répéteur, une étiquette de résultats de recherche, des liens pour aller vers le haut et le bas du contenu du répéteur, etc. Ce contrôle composite n'est pas un répéteur, mais utilise un répéteur.

+0

Clarifié ma question. – maxbeaudoin

Questions connexes