0

これが私のコードです:

<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 が呼び出されるまでに、テキストエリアの値はすでに設定されているようです。この時点でその値を更新する方法はありますか?

4

1 に答える 1

0

答え: .NET を使用している場合は、CKEditor、tinyMCE、およびその他すべてのリッチ テキスト エディターを忘れてください。AJAX Control Toolkitのことを知るのに、こんなに時間がかかったなんて信じられません。

于 2012-10-12T18:46:51.043 に答える