4

asp.netの更新パネル内のCKEditorで問題が発生しています。複数のCKEditor、つまり各タブに1つの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);

上記のコードスニペットは、更新パネルでエディターをレンダリングするのに役立ちます。ただし、ポストバックが実行されると、変更された値ではなく以前の値が表示されます。つまり、更新パネルでタブが変更された後に行われた変更はエディターに反映されません。

同じことが、更新パネルがなくても完全に正常に機能します。

この問題の解決策はありますか?

4

3 に答える 3

8

変更時にckeditorにtextareaを更新させるだけです:

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

ckEditor.on("change", function (event) {
    event.editor.updateElement();
});
于 2014-06-11T23:51:52.497 に答える
1

これについての回答が遅れて申し訳ありませんが、回答は他の人にも役立つ可能性があります。また、コードビハインドで次のことを行う必要があります。

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

お役に立てれば。

于 2013-11-01T19:57:37.767 に答える
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
于 2016-11-04T18:45:58.330 に答える