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

mlmc2os5  于 2022-11-19  发布在  .NET
关注(0)|答案(3)|浏览(130)

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

上面的代码片段有助于在更新面板中呈现编辑器。但是当回发完成时,它仍然显示较早的值,而不是更改后的值,即编辑器不会反映在更新面板中更改选项卡后所做的更改。
同样的事情在没有更新面板的情况下工作得非常好。
这个问题有什么解决办法吗?

pobjuy32

pobjuy321#

只要强制ckeditor在更改时更新文本区域:

var ckEditor = CKEDITOR.replace('ctl00_ContentPlaceHolder1_faqeditor');

ckEditor.on("change", function (event) {
    event.editor.updateElement();
});
juud5qan

juud5qan2#

很抱歉对这个问题的回复太晚了,但是这个答案可能对其他人也有帮助。您还需要在代码后面执行以下操作:

ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), "updatescript", "CKEDITOR.instances['ctl00_ContentPlaceHolder1_faqeditor'].updateElement();");

希望这对你有帮助。

eit6fx6z

eit6fx6z3#

<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

相关问题