Meh*_*hdi 3 c# asp.net text-editor ajaxcontroltoolkit html-editor
如何更改ACT HTML编辑器的默认设置?我想加载编辑器,例如选择粗体按钮或默认使用rtl方向而不是ltr.
我该怎么做?我重写FillTopToolbar()了添加自定义按钮的方法,但我不知道如何更改默认设置.
选择默认ltr我想将其更改为rtl.
我编辑了我的答案来纠正一些事情
HTMLEditor没有提供使用服务器端代码设置这些按钮状态的方法.虽然在客户端上,它通过使用Sys.Application.load事件进行初始化.如果您在初始化程序之后运行代码,但在用户与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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Sys(以及Sys.Application)是一个来自ASP.Net AJAX javascript的命名空间(由于您添加到页面的ScriptManager而添加的文件).如果使用此方法,则需要确保Sys.Application.add_load(myOnLoad);在加载ASP.Net AJAX文件后运行此行.您可以通过以下几种方式执行此操作:
如果将脚本移动到单独的文件中,您会发现它var editor = $find('<% =youreditor.ClientID %>');不再有效.这是因为javascript文件不解析服务器标签并用服务器端值替换它们(如aspx页面那样).所以这里出现问题的部分是<% =youreditor.ClientID %>.
要解决这个问题,请执行以下操作:
将其添加到您的aspx标记(在head部分):
<script language="javascript">
var myEditorId = '<%= youreditor.ClientID %>';
</script>
Run Code Online (Sandbox Code Playgroud)
所以它看起来像这样:
<head runat="server">
<script language="javascript">
var myEditorId = '<%= youreditor.ClientID %>';
</script>
<title></title>
</head>
Run Code Online (Sandbox Code Playgroud)
(如果您使用母版页,则只需在页面中的ScriptManager下添加脚本标记)
在你的JS文件中,替换它
var editor = $find('<% =youreditor.ClientID %>');
Run Code Online (Sandbox Code Playgroud)
有了这个
var editor = $find(myEditorId);
Run Code Online (Sandbox Code Playgroud)