Ajax Control Toolkit HTML编辑器自定义问题?

时间:2010-01-13 12:46:01

标签: c# asp.net ajaxcontroltoolkit text-editor html-editor

如何更改ACT HTML编辑器的默认设置?我想加载编辑器,例如选择粗体按钮或默认使用rtl方向而不是ltr。
我该怎么做? 我重写了FillTopToolbar()方法来添加自定义按钮,但我不知道如何更改默认设置。
当选择默认ltr时我想将其更改为rtl。

2 个答案:

答案 0 :(得分:5)

我编辑了我的答案以纠正一些事情

HTMLEditor没有提供使用服务器端代码设置这些按钮状态的方法。虽然在客户端上,它使用Sys.Application.load Event进行初始化。如果您在初始化程序之后运行代码,但在用户与UI交互之前,您可以设置要在该事件处理程序中设置的任何属性。

以下是设置粗体按钮和rtl按钮状态所需的代码。如果要更改其他按钮的状态,可以从此处获取:

// 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(以及Sys.Application)是一个来自ASP.Net AJAX javascript的命名空间(由于您添加到页面的ScriptManager而添加的文件)。如果您使用此方法,则需要确保在加载A​​SP.Net AJAX文件后运行此行Sys.Application.add_load(myOnLoad);。您可以通过以下几种方式执行此操作:

  1. 在页面下方添加此脚本而不是scriptManager。
  2. 将您的脚本移动到单独的JS文件中,并使用ScriptManager加载它(推荐)。
  3. 如果您将脚本移动到单独的文件中,您会注意到var editor = $find('<% =youreditor.ClientID %>');不再有效。这是因为javascript文件不解析服务器标签并用服务器端值替换它们(如aspx页面那样)。所以这里出现问题的部分是<% =youreditor.ClientID %>

    要解决这个问题,请执行以下操作:

    将此添加到您的aspx标记(在head部分中):

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

    所以它看起来像这样:

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

    (如果您使用母版页,则只需在页面中的ScriptManager下添加脚本标记)

    在您的JS文件中,替换此

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

    用这个

    var editor = $find(myEditorId);
    

答案 1 :(得分:0)

您需要使用CSS执行此操作,因为编辑器控件本身不支持rtl。以下CSS将设置方向为rtl -

div
{
    direction:rtl;
}

可以在Editor.css文件中找到HTML编辑器的默认样式。