2010-01-13 16 views
3

Comment modifier les paramètres par défaut pour ACT HTML Editor? Je veux charger l'éditeur avec par exemple le bouton sélectionné gras ou avec la direction rtl au lieu de ltr par défaut.
Comment puis-je effectuer cela? J'ai substitué FillTopToolbar() méthode pour ajouter des boutons personnalisés, mais je ne sais pas comment modifier les paramètres par défaut.
as Default ltr est sélectionné Je veux le changer en rtl.
Ajax Control Toolkit Personnalisation de l'éditeur HTML Problème?

+0

Quelqu'un peut-il pas me aider? – mahdiahmadirad

Répondre

5

J'ai effectué ma réponse pour corriger certaines choses

Le HTMLEditor ne fournit pas un moyen de définir l'état de ces boutons en utilisant le code Serverside. Bien que, sur le client, il initialise en utilisant Sys.Application.load Event. Si vous avez exécuté votre code après leurs initialiseurs, mais avant que l'utilisateur n'interagisse avec l'interface utilisateur, vous pouvez définir les propriétés que vous souhaitez définir dans ce gestionnaire d'événements.

Voici le code dont vous avez besoin pour définir le bouton en gras et les états des boutons rtl. Vous pouvez le prendre à partir d'ici si vous voulez changer les états d'autres boutons:

// Attach a handler to the load event. 
Sys.Application.add_load(myOnLoadLoader); 

function myOnLoadLoader() { 
    //This will run JUST after ALL code that was set to run during the load event has run 
    window.setTimeout(myOnLoad, 0); 
} 

function myOnLoad() { 
    var editor = $find('<% =editor.ClientID %>'); 
    var toolbar = editor.get_changingToolbar(); 
    var toolbarButtons = toolbar.get_buttons(); 
    for (var i = 0; i < toolbarButtons.length; i++) { 
     var toolbarButton = toolbarButtons[i]; 
     if (toolbarButton instanceof AjaxControlToolkit.HTMLEditor.ToolbarButton.Rtl || 
     toolbarButton instanceof AjaxControlToolkit.HTMLEditor.ToolbarButton.Bold) { 
      toolbarButton.set_activeEditPanel(editor.get_editPanel()); 
      toolbarButton.callMethod(); 
     } 
    } 
} 

Sys (et donc Sys.Application) est un espace de nom qui vient du javascript ASP.Net AJAX (fichier (s) que sont ajoutés grâce au ScriptManager que vous ajoutez à votre page). Si vous l'utilisez, vous devez vous assurer que cette ligne Sys.Application.add_load(myOnLoad); s'exécute après le chargement des fichiers ASP.Net AJAX. Vous pouvez le faire de plusieurs manières:

  1. Ajoutez ce script plus bas dans la page que le scriptManager.
  2. Déplacez votre script dans un fichier JS distinct et utilisez le ScriptManager pour le charger (recommandé).

Si vous déplacez votre script dans un fichier séparé, vous remarquerez que var editor = $find('<% =youreditor.ClientID %>'); ne fonctionne plus. En effet, les fichiers javascript n'analysent pas les balises de serveur et les remplacent par la valeur côté serveur (comme le font les pages aspx). Donc, la partie qui pose problème est <% =youreditor.ClientID %>.

Pour résoudre ce problème, voici ce que vous faites:

Ajouter à votre balisage ASPX (dans la partie de la tête):

<script language="javascript"> 
    var myEditorId = '<%= youreditor.ClientID %>'; 
</script> 

il semble donc quelque chose comme ceci:

<head runat="server"> 
    <script language="javascript"> 
     var myEditorId = '<%= youreditor.ClientID %>'; 
    </script> 
<title></title> 
</head> 

(Si vous utilisez une page maître, vous n'aurez qu'à ajouter la balise de script sous le ScriptManager de votre page)

Et dans votre fichier JS, remplacez cette

var editor = $find('<% =youreditor.ClientID %>'); 

avec ce

var editor = $find(myEditorId); 
+0

Il s'agit d'une exagération énorme pour la question ... tout ce que vous avez à faire est de définir la propriété stylesheet existante et de mettre les styles par défaut que vous voulez. Les boutons se mettent à jour déjà ... –

+0

@Nick: Vous avez tort. L'OP n'a pas demandé comment faire un élément dans une page lue de droite à gauche. Il a demandé comment définir les propriétés d'un composant HTMLEditor. –

+1

@Gabrial McAdams: après votre modification, la réponse est beaucoup plus appropriée, ce sont les autres changements qui l'ont fait surpasser. J'ai supprimé ma réponse à cela parce que la fonctionnalité d'auto-détection n'est pas dans le Ajax Toolkit par défaut, il semble, a été retiré quelque temps avant la dernière version. Votre réponse actuelle est sur place maintenant, s'ils ajoutent la fonctionnalité pour la détection d'état avec la version 4.0, je reviendrai et mettrai à jour cette question. –

0

Vous devrez le faire en utilisant CSS car le contrôle de l'éditeur ne supporte pas rtl nativement. Le CSS suivant pour définir la direction rtl -

div 
{ 
    direction:rtl; 
} 

Les styles par défaut pour l'éditeur HTML peut être trouvé dans le fichier editor.css.

+0

ma page Web de trou est rtl. mais il n'y a aucun effet sur l'éditeur ACT car il est dépendant du style de page. Je veux placer le bouton de direction à RTL en tant que défaut. – mahdiahmadirad

+0

Vous pouvez trouver le style CSS par défaut dans AjaxControlToolkit \ HTMLEditor \ Editor.css. HTMLEditor possède également une propriété CssClass. –

+0

Aimeriez-vous me pointer le nom de la sorcière Devrais-je changer? Il y a beaucoup de noms de classe et je ne trouve pas que l'un d'eux soit pour le style textarea de changer le style de RTL. bien que je ne pense pas que cette solution provoque le bouton rtl sélectionné dans la barre d'outils de contrôle. – mahdiahmadirad