CKEditor在更新面板中无法正常工作

时间:2012-07-14 14:20:15

标签: asp.net updatepanel ckeditor

我在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);

上面的代码段有助于在更新面板中呈现编辑器。但是当回发完成后,它仍会显示较早的值而不是更改的值,即编辑器不会反映在更新面板中更改选项卡后所做的更改。

同样的事情在没有更新面板的情况下完全正常。

这个问题有解决办法吗?

3 个答案:

答案 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