Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [.NET 2.0] Problème avec VS2005 [ Archives ASP & ASP.NET / AU SECOURS !!!! ] (stailer)

mercredi 14 décembre 2005 à 16:05:28 | [.NET 2.0] Problème avec VS2005

stailer

Bonjour,

En asp.net 1.1 j'avais une classe comme ceci :

[code]
namespace MonAppli
    {
        public class Formulaire : System.Web.UI.HtmlControls.HtmlForm
        {

            protected override void RenderAttributes(HtmlTextWriter writer)
            {
                base.RenderAttributes(writer);

                writer.WriteAttribute("name", this.Name);
                base.Attributes.Remove("name");

                writer.WriteAttribute("method", this.Method);
                base.Attributes.Remove("method");

                base.Attributes.Remove("action");

                this.Attributes.Render(writer);

                if (base.ID != null)
                    writer.WriteAttribute("id", base.ClientID);
            }

        }
    }
[/code]

Elle me permettait de modifier les attributs de la balise form, difficilement accessible (Attributes.Remove ne fonctionnant pas..) et donc de l'appeler dans une page aspx de cette façon :

[code]
<%@ Register TagPrefix="st" Namespace="MonAppli"%>

<st:Formulaire id="Form1" runat="server">
[/code]

Le problème avec VS2005 c'est que je ne vois plus mes composants dans le formulaire (dans le designer) ! Il m'affiche une erreur à la place :

Form1:Unable to cast object of type 'System.Web.UI.Design.HtmlIntrinsicControlDesigner' to type 'System.Web.UI.Design.ControlDesigner'.   

Quelqu'un saurait ce que je dois modifier ? Car je compte développer d'autres classes du même type... Et le fait de ne pas voir les composants dans le desisgner est un gros souci.

En vous remerciant,

<--St@iLeR-->

mercredi 14 décembre 2005 à 17:30:12 | Re : [.NET 2.0] Problème avec VS2005

jesusonline

Membre Club Administrateur CodeS-SourceS
Quand j'avais ce genre de poblème je me servais de reflector pour regarder comment fonctionne le controle htmlform de base.

A mon avis c'est un problème de designer, mais la reflector est ton ami ;)

au pire je pourrais t'aider =)


Cyril - MVS - MCP ASP

jeudi 15 décembre 2005 à 04:40:03 | Re : [.NET 2.0] Problème avec VS2005

stailer

Salut,

effectivement, tu vas pouvoir m'aider : (

Je comprends pas vraiment , j'ai cherché partout sur la msdn.
Apparemment il faudrait déclarer un truc comme ça avant la classe :

[Designer... ControlDesigner)]
public class Form : ..HtmlForm

Mais ça ne foncionne pas.
J'ai lu qu'il faudrait hériter de la classe ControlDesigner ou du moins en modifier l'interface pour la
transformer en HtmlIntrinsicControlDesigner. Ou l'inverse , j'ai pas vraiment compris.

Merci pour ton aide, because je suis dans le brouillard complet.

<--St@iLeR-->

jeudi 15 décembre 2005 à 10:08:48 | Re : [.NET 2.0] Problème avec VS2005

jesusonline

Membre Club Administrateur CodeS-SourceS
Malheureusement j'ai pas le temps de t'aider :s

oui c'est bien avec un attribut et bien avec un designer regarde dans reflector comment ca fonctionne, c'est tout ce queje peux dire


Cyril - MVS - MCP ASP<

lundi 26 décembre 2005 à 16:15:30 | Re : [.NET 2.0] Problème avec VS2005

stailer

Petite avancée, en faisant ceci :

internal class MyControlDesigner : System.Web.UI.Design.ControlDesigner
    {
        public MyControlDesigner() { }

       public override string GetDesignTimeHtml()
       {
            return this.CreatePlaceHolderDesignTimeHtml();
       }

        public override void Initialize(IComponent component)
        {
            base.Initialize(component);
        }
    }


et donc :

[DesignerAttribute(typeof(MyControlDesigner)) ]
    public class form : System.Web.UI.HtmlControls.HtmlForm {...}

Je n'ai plus la même erreur , mais :

Duplicate component name 'Form1'. Component names must be unique and case-insensitive.

Si je change le nom, avec Form2 par exemple, l'erreur est toujours la même. C'ets vraiment pénible ce problème, surtout que je voudrais développer d'autres composants de ce type. J'en profite donc pour remonter ce souci, en espérant avoir une petite aide...

Merci,

lundi 26 décembre 2005 à 16:33:12 | Re : [.NET 2.0] Problème avec VS2005

jesusonline

Membre Club Administrateur CodeS-SourceS

J'ai un peu de temps pour t'aider ;)
J'ai pas créer de controle form mais un controle container que voici

namespace CSLib.Web.UI.CSControls
{
    /// <summary>
    /// Un Container possede un titre et du contenu
    /// </summary>
    [ToolboxData(@"<{0}:Container runat=""server""></{0}:Container>"),
    ParseChildren(false),
    PersistChildren(true),
    Designer(typeof(Design.ContainerDesigner))]
    public class Container : CSLib.Web.UI.CSControls.CSControl
    {
        [Description("Title"),
        Browsable(true)]
        public string Title
        {
            get
            {
                if (ViewState["title"] != null)
                    return (string)ViewState["title"];
                else
                    return string.Empty;
            }
            set { ViewState["title"] = value; }
        }

        protected override void Render(HtmlTextWriter writer)
        {
            writer.Write(string.Format("<div class=\"CSLib_C\" id=\"{0}\">\n", this.ClientID));
            writer.Write(string.Format("\t<div class=\"CSLib_C_T\">{0}</div>\n", this.Title));
            writer.Write("\t<div class=\"CSLib_C_C\">\n");
            base.Render(writer);
            writer.Write("\n\t</div>\n");
            writer.Write("</div>");
        }
    }
}


et le designer

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.Design;
using System.ComponentModel;
using CSLib.Web.UI;
using System.Globalization;

namespace CSLib.Web.UI.CSControls.Design
{
    public class ContainerDesigner : System.Web.UI.Design.ContainerControlDesigner
    {
        private Container _ctrl = null;
        private string _content = string.Empty;

        public override void Initialize(IComponent component)
        {
            if (component is Container)
                _ctrl = (Container)component;
            else
                throw new Exception("Bad Control");

            base.Initialize(component);
        }

        public override bool AllowResize
        {
            get
            {
                return false;
            }
        }

        public override string GetDesignTimeHtml(DesignerRegionCollection regions)
        {
            EditableDesignerRegion RegionContent = new EditableDesignerRegion(this, "Content");
            regions.Add(RegionContent);

            Object[] objArray1 = new object[] { _ctrl.Title, DesignerRegion.DesignerRegionAttributeName };
            return String.Format(CultureInfo.InvariantCulture,
                    @"<div class=""CSLib_C"">" +
                    @"    <div class=""CSLib_C_T"">{0}</div>" +
                    @"    <div class=""CSLib_C_C"" {1}=""0"">rien</div>" +
                    @"</div>"
                , objArray1);
        }
    }
}


Je pense que ton problème vient de GetDesignTimeHtml, toi tu fais appel à CreatePlaceHolderDesignTimeHtml qui fait plus ou moins la meme chose :

protected string CreatePlaceHolderDesignTimeHtml(string instruction)
{
      string text1 = base.Component.GetType().Name;
      string text2 = base.Component.Site.Name;
      if (instruction == null)
      {
            instruction = string.Empty;
      }
      object[] objArray1 = new object[] { text1, text2, instruction } ;
      return string.Format(CultureInfo.InvariantCulture, ControlDesigner.PlaceHolderDesignTimeHtmlTemplate, objArray1);
}
 
 mis à part que la fonction fait appell à ControlDesigner.PlaceHolderDesignTimeHtmlTemplate, malheureusement reflector n'a pas voulu me dire ce que cela vaut :(

mais le truc c'est que les zones éditables sont une nouveautés dans VS2005 pour l'instant j'ai pas trouvé d'articles la dessus (il y a 3/4 mois), ce qu'il faut savoir c'est qu'il faut mettre un attribut ayant la valeur

DesignerRegion.DesignerRegionAttributeName étant égale à n sur l'element que tu veux editer

            Object[] objArray1 = new object[] { _ctrl.Title, DesignerRegion.DesignerRegionAttributeName };
            return String.Format(CultureInfo.InvariantCulture,
                    @"<div class=""CSLib_C"">" +
                    @"    <div class=""CSLib_C_T"">{0}</div>" +
                    @"    <div class=""CSLib_C_C"" {1}=""0"">rien</div>" +
                    @"</div>"
                , objArray1);


Je dis égale à n car on a la possibilité de mettre plusieurs zones éditables pour ensuite les recuperer plus loin :)

j'espere que ca t'aidera, sinon envoie moi un message privée et je te répondrais en te donnant mon adresse msn ce sera plus simple (on mettra bien sur la solution finale ici ;))


Cyril - MVS - MCP ASP




Cette discussion est classé dans : base, code, attributes, remove, writer


Répondre à ce message

Sujets en rapport avec ce message

Base de donné. Mon code ne marche pas [ par kikim ] Salut tout le monde, j'ai un etit probléme avec ce code.Quand j'essai de l'appliquer j'ai une erreur au niveau de la ligne :Dim TabNom_ASP (RS.RecordC Code pour calculer temps [ par Zeus ] Je recherche du code pour calculer le temps que prend une requête a interroger une base de donnees pour comparer la rapiditer de différent codes qui a Créer une base de donnée [ par Niaphron ] Je voudrais savoir si il y a un moyen en ASP, de crée une base de donnée par l'intermédiaire d'un code source !J'avais croisé le code sur internet, ma ajout de données dans une base : heeeeeeeeeeeeeeeelp ! [ par syferx ] Bon j'en ai marre ça fait 2 jours que je rame et que j'arrive pas à ajouter des données dans ma base avec ce p.... de code ! Si quelqu'un avait la gen Comment créer une table dans une base à partir d'un code [ par webmaster91 ] Bonjour,Comment créer une table avec plusieurs champs dans une base à partir d'un code ?MerciWebm@ster91 connexion à une base oracle sans DSN [ par wboultam ] bonjour,je veux me connecter à une base de données oracle 9 qui se trouve sur un serveur Linux depuis ma machine windows NT serveur avec le client ora formulaire HTML dans base de donnee [ par college ] salut tout le monde j'ai un probleme avec du code html que je mets dans une base de donnee et quand j'ai besoin je l'appel mais il ne veut pas faire l inserer plusieurs lignes dans base de donne [ par college ] salut tout le monde , ja'i un probleme je veux mettre plusieurs lignes dans une base de donnee il y a une relation entres deux tables et je pense que ASP/Java et base de donnee:casse tete [ par alaincau ] Je planche depuis deux jours sur un petit casse tete que mon niveau de debutant ne me permet pas de resoudre.Le script suivant a pour but de generer d code pour attacher un fichier avec base de données [ par bondgirl75018 ] salut , quelqu'un pourrait me dire comment insérer dans ma page internet un bouton attacher fichier et quel est le code qui va avec pour permettre de


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.