Controle Utilisateur hérité du gridview

[Résolu]
Signaler
Messages postés
15
Date d'inscription
jeudi 4 mai 2006
Statut
Membre
Dernière intervention
11 novembre 2007
-
Messages postés
15
Date d'inscription
jeudi 4 mai 2006
Statut
Membre
Dernière intervention
11 novembre 2007
-
Bonjour,

J'ai crée une librairie avec un contrôle utilisateur dérivant du GridView
 Voici son code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace LBAWebControlLibrary
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:LBAGridView runat=server></{0}:LBAGridView>")]
[Designer("LBAGridViewDesigner","System.Web.UI.Design.WebControls.GridViewDesigner")]
public class LBAGridView : GridView
{
[Bindable(true)]
[Category("LBA")]
[DefaultValue("")]
[Localizable(true)]
public string Trigramme
{
get
{
String s = (String)ViewState["Trigramme"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Trigramme"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Trigramme);
}
}
}

C'est très simple pour le moment cela rajoute une propriété TRIGRAMME au niveau de la fenêtre de propriété.

J'ai compilé ma bibliothèque et j'ai utilisé mon control dans une page web. En mode DESIGN je voyais uniquement un carré gris.

J'ai donc ajouté un désigner

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.Design.WebControls;
namespace LBAWebControlLibrary
{
class LBAGridViewDesigner:GridViewDesigner
{
LBAGridView _LBAGridView ;
public override string GetDesignTimeHtml()
{
string designTimeHtlm = string.Empty;
_LBAGridView = (LBAGridView)Component;
return base.GetDesignTimeHtml();
}
public override void Initialize(System.ComponentModel.IComponent component)
{
_LBAGridView = (LBAGridView)component;
base.Initialize(component);
}
}


Cela n'a rien changé. De plus lorsque je lance ma page les informations ne sont pas affichées bien que ma datasource soit correcte. Pouvez-vous m'aider

Merci !  



LoloWan

7 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Tu appliques ton skin via un fichier skin ? dans ce cas oui c'est normal, faut mapper le fichier skin avec ton controle

Pour mettre un tagprefix spécifique ca se passe en 2étapes :

faut rajouter l'attribut ToolboxData au niveau de ton contrôle et l'attribut [Assembly:tagprefix("Namespace", "tontag")] au niveau de l'assembly

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Bonsoir,

Pas étonnant que ton contrôle n'affiche rien, tu redefinis le rendercontent en mettant seulement ce que tu veux ... il fat pas oblier de faire un base.RenderContents(output), mais tu risques d'avoir d'autres problèmes en faisant comme ca ... Que veux tu faire exactement ? je te conseil d'utiliser un CompositeControl ou alors de surcharger la méthode CreateChildControls et de mettre ton contenu via un literalcontrol.

Pour le designer, pas besoin d'en mettre un particulier, le prblème venait surement à cause de la redefinition vide de rendercontents, sinon applique directement le GridViewDesigner sans en créer un nouveau. Ca devrait fonctionner.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
15
Date d'inscription
jeudi 4 mai 2006
Statut
Membre
Dernière intervention
11 novembre 2007

Merci,

cela marche en effet mieux.

Une autre petite question. En fait deux :
- Le skin défini pour les gridview de mon thème ne fonctionne par sur mon controle. Faut-il en définir un spécifique pour mon controle hérité et si oui comment ?
- Est-il possible de définir au niveau de mon controle un tagprefix spécifique.

   
Messages postés
15
Date d'inscription
jeudi 4 mai 2006
Statut
Membre
Dernière intervention
11 novembre 2007

Super ca marche. Merci beaucoup et a bientôt je pense !!!!
   
Messages postés
15
Date d'inscription
jeudi 4 mai 2006
Statut
Membre
Dernière intervention
11 novembre 2007

Encore une petite question :
Et comment faire pour ajouter dans ma grid une template colonne par défaut (ma propre colonne avec mes boutons actions)

Merci par avance

   
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Par défaut, ca devient plus compliqué là :-p

deux solutions soit tu le fais via le Toolboxdata (c'est très simple) soit il faut que tu fasses l'init dans le createchildcontrols & co

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
15
Date d'inscription
jeudi 4 mai 2006
Statut
Membre
Dernière intervention
11 novembre 2007

tu aurais un exemple