lolowan
Messages postés15Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 novembre 2007
-
10 nov. 2007 à 01:04
lolowan
Messages postés15Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 novembre 2007
-
11 nov. 2007 à 18:20
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
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 10 nov. 2007 à 01:10
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.
lolowan
Messages postés15Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 novembre 2007 11 nov. 2007 à 09:26
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.