これが私のコードです:
<asp:UpdatePanel ID="up1" runat="server">
<ContentTemplate>
<script type="text/javascript">
var app = Sys.WebForms.PageRequestManager.getInstance();
app.add_pageLoaded(createEditor)
app.add_initializeRequest(removeEditor)
function createEditor() {
if (editor) return;
var config = { toolbar: 'Description', width: 540 };
editor = CKEDITOR.replace("editor", config);
}
function removeEditor() {
if (!editor) return;
editor.destroy();
editor = null;
}
</script>
<textarea id="editor" cols="1" rows="1" runat="server">
</textarea>
<asp:Button ID="btnsubmit" Text="Get 'er Done" runat="server" />
<div>
<%=strmessage%>
</div>
</ContentTemplate>
</asp:UpdatePanel>
パネルが読み込まれると、CKEditor がテキストエリアに適用されます。パネルがポストバックするとき、エディターを破棄してデータをテキストエリアに戻す必要があります。このコードでは、ポストバック データを更新するのに間に合うようにエディターが破棄されません。これを行うと機能します:
<asp:Button ID="btnsubmit" onClientClick="removeEditor()" Text="Get 'er Done"
runat="server" />
問題は、UpdatePanel が常にそのボタンでトリガーされるとは限らず、リモートでトリガーされることもあります。initializeRequest が呼び出されるまでに、テキストエリアの値はすでに設定されているようです。この時点でその値を更新する方法はありますか?