IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Custom Control pour gestion du Multilangue


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut Custom Control pour gestion du Multilangue
    Bonjour,

    Vous n'auriez pas une doc sur System.ComponentModel.Component?

    Mon objectif est de gérer le multilangue dans une application avec :
    - un custom control (que je nomme Connector) qui me permet de me pluguer à un fichier XML comprenant les différentes traductions pour un objet. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="iso-8859-1" ?> 
    <object id="Label1">
    	<text lang="Fr"><![CDATA[<b><u>Mon Text en html</u></b>]]></text>
    	<text lang="En"><![CDATA[<b><u>My html text</u></b>]]></text>
    </object>
    - Un custom control (que j'appelle Label) qui prend pour source un Connector

    Pour l'instant, côté Connector j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    	public class Connector : System.ComponentModel.Component
    	{
    		private string _lang = "Fr";
    		private XmlDocument _source;
    		private string _sourceFileName = null;
     
    		/// <summary>
    		/// 
    		/// </summary>
    		public Connector()
    		{
    			this._source = new XmlDocument();
    		}
     
    		/// <summary>
    		/// 
    		/// </summary>
    		[Bindable(true), 
    		Category("Connection"), 
    		DefaultValue(true)] 
    		public string Lang 
    		{
    			get
    			{
    				return this._lang;
    			}
     
    			set
    			{
    				this._lang = value;
    			}
    		}
     
     
     
    		[
    		DefaultValue(""),
    		Editor(typeof(System.Web.UI.Design.XmlUrlEditor), typeof(System.Drawing.Design.UITypeEditor)),
    		]
    		public string Source 
    		{
    			get
    			{
    				return this._sourceFileName;
     
    			}
     
    			set
    			{
    				this._sourceFileName = value;
    			}
    		}
     
     
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="nameObject"></param>
    		/// <returns></returns>
    		internal string GetValue(string nameObject)
    		{
    			XmlNode obj = this._source.SelectSingleNode("//object[@id='" + nameObject + "']/text[@lang='" + this._lang + "']");
    			if(obj != null)
    				return obj.InnerText;
    			else
    				return string.Empty;
    		}
     
    	}
    Et côté Label :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    	/// <summary>
    	/// Description résumée de Label.
    	/// </summary>
    	[DefaultProperty("Text"), 
    	ToolboxData("<{0}:Label runat=server></{0}:Label>")]
    	public class Label : System.Web.UI.WebControls.Label
    	{
    		private Connector _source;
     
    		[Bindable(true), 
    		Category("DataSource"), 
    		DefaultValue("")] 
    		public Connector Source
    		{
    			get
    			{
    				return this._source;
    			}
    			set
    			{
    				this._source = value;
    			}
    		}
     
    		/// <summary> 
    		/// Génère ce contrôle dans le paramètre de sortie spécifié.
    		/// </summary>
    		/// <param name="output"> Le writer HTML vers lequel écrire </param>
    		protected override void Render(HtmlTextWriter output)
    		{
    			output.Write(this._source.GetValue(this.ID));
    		}
    	}
    Côté ASPX, ça me donne cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    </CC1:CONNECTOR>
    <cc1:Label id="Label1" runat="server" Source="connector3"></cc1:Label>
    Donc j'aimerai pouvoir :
    - ajouter une boite de dialogue à la propriété Source du Connector,
    - que les propriétés du Connector soient visible dans le ASPX (comme pour le Label)... hors là j'ai juste un </CC1:CONNECTOR> (les propriétés se mettent dans le code behind... c'est pénible :p)
    - Pouvoir mettre à jour automatiquement tous les éléments connectés à mon Connector (en cas de changement de fichier source par exemple)

    Pour tout ça, j'ai besoin d'un gros coup de main ;-)

    Si quelqu'un a déjà fait un truc de similaire, ça m'intéresse

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut
    J'ai résolu le cas de la boite de dialogue pour la recherche de fichier avec
    Editor(typeof(System.Web.UI.Design.XmlUrlEditor) ...

    Cependant, cela me retourne un chemin relatif ... ce qui implique que je ne puisse charger le fichier qu'à l'exécution de la Page.

    Et là, comment m'y prendre pour charger le document XML qu'une seule fois (même si X label lui sont rattaché ?)

Discussions similaires

  1. Gestion d'un Hidden avec Custom Control + Javascript
    Par Ishizaki dans le forum ASP.NET
    Réponses: 5
    Dernier message: 07/10/2008, 10h17
  2. [C#] Erreur de codeDom pour un custom control
    Par padodanle51 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/04/2006, 11h27
  3. Controle pour gestion / recherche de dossiers...
    Par Spike Spiegel dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/11/2005, 12h48
  4. [C#] Quel controle pour le dessin + eviter clignotement
    Par JEG dans le forum Windows Forms
    Réponses: 10
    Dernier message: 08/10/2004, 11h28
  5. "Tree Control" pour "Dialog Based"
    Par bigboomshakala dans le forum MFC
    Réponses: 4
    Dernier message: 22/04/2004, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo