Я отредактировал свой ответ, чтобы исправить некоторые вещи
HTMLEditor не предоставляет способ установить состояние этих кнопок с помощью серверного кода. Хотя на клиенте он инициализируется с помощью Sys.Application.load Event . Если вы запустили свой код после их инициализаторов, но до того, как пользователь будет взаимодействовать с пользовательским интерфейсом, вы можете установить любые свойства, которые вы хотите установить в этом обработчике событий.
Вот код, необходимый для установки кнопки жирного шрифта и состояния кнопок 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) - это пространство имен, которое происходит из javascript ASP.Net AJAX (файлы, которые добавляются благодаря ScriptManager, который вы добавляете на свою страницу). Если вы используете это, вы должны быть уверены, что эта строка Sys.Application.add_load(myOnLoad);
запускается после загрузки файлов ASP.Net AJAX. Вы можете сделать это несколькими способами:
- Добавьте этот скрипт ниже на странице, чем scriptManager.
- Переместите сценарий в отдельный файл JS и загрузите его с помощью ScriptManager (рекомендуется).
Если вы переместите свой скрипт в отдельный файл, вы заметите, что 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>
(Если вы используете мастер-страницу, вы просто добавите тег script под ScriptManager на своей странице)
И в вашем файле JS замените это
var editor = $find('<% =youreditor.ClientID %>');
с этим
var editor = $find(myEditorId);