我在asp.net的更新面板中遇到CKEditor问题。 我在页面上有多个CKEditor的标签控件,即每个标签中有一个ckeditor。
string scriptAdd = @"var editor = CKEDITOR.instances['ctl00_ContentPlaceHolder1_faqeditor']; if (editor) { editor.destroy(true); } CKEDITOR.replace('ctl00_ContentPlaceHolder1_faqeditor');";
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "", scriptAdd, true);
上面的代码段有助于在更新面板中呈现编辑器。但是当回发完成后,它仍会显示较早的值而不是更改的值,即编辑器不会反映在更新面板中更改选项卡后所做的更改。
同样的事情在没有更新面板的情况下完全正常。
这个问题有解决办法吗?
答案 0 :(得分:8)
只需强制ckeditor在更改时更新textarea:
var ckEditor = CKEDITOR.replace('ctl00_ContentPlaceHolder1_faqeditor');
ckEditor.on("change", function (event) {
event.editor.updateElement();
});
答案 1 :(得分:1)
很抱歉对此有迟到的回复,但答案也可能对其他人有所帮助。您还需要在后面的代码中执行以下操作:
ScriptManager.RegisterOnSubmitStatement(this,this.GetType(),“updatescript”,“CKEDITOR.instances ['ctl00_ContentPlaceHolder1_faqeditor']。updateElement();”);
希望这有帮助。
答案 2 :(得分:0)
<form id="form1" runat="server">
<asp:ScriptManager ID="scrpM" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="btnshow" runat="server" Text="Show Hidden Editor" />
<div id="divEditor" runat="server" visible="false">
<asp:PlaceHolder ID="plCKEditor" runat="server"></asp:PlaceHolder>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
----------
Add editor inside a div with visible="false"
and on the button click you set visible="True"
it's works fine for me