无法更新 TinyMCE 中的文本框

发布于 2024-12-18 09:38:56 字数 6362 浏览 1 评论 0原文

我正在使用 TinyMCE,文本区域被替换为文本框,但是当我尝试使用文本框中的新文本更新数据库时,它不会更新。谁能帮助我吗?

我的代码看起来像这样

<%@ Page Title="" Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Test_TinyMCE._default" ValidateRequest="false" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script src="JavaScript/tiny_mce/tiny_mce.js" type="text/javascript"></script>
    <script type="text/javascript">
        tinyMCE.init({
            // General options
            mode: "textareas",
            theme: "advanced",
            plugins: "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,pre    view,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,no    nbreaking,xhtmlxtras,template,wordcount,advlist,autosave",

            // Theme options
            theme_advanced_buttons1: "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
            theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
            theme_advanced_buttons3: "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
            theme_advanced_buttons4: "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
            theme_advanced_toolbar_location: "top",
            theme_advanced_toolbar_align: "left",
            theme_advanced_statusbar_location: "bottom",
            theme_advanced_resizing: true,

            // Example content CSS (should be your site CSS)
            // using false to ensure that the default browser settings are used for best Accessibility
            // ACCESSIBILITY SETTINGS
            content_css: false,
            // Use browser preferred colors for dialogs.
            browser_preferred_colors: true,
            detect_highcontrast: true,

            // Drop lists for link/image/media/template dialogs
            template_external_list_url: "lists/template_list.js",
            external_link_list_url: "lists/link_list.js",
            external_image_list_url: "lists/image_list.js",
            media_external_list_url: "lists/media_list.js",

            // Style formats
            style_formats: [
            { title: 'Bold text', inline: 'b' },
            { title: 'Red text', inline: 'span', styles: { color: '#ff0000'} },
            { title: 'Red header', block: 'h1', styles: { color: '#ff0000'} },
            { title: 'Example 1', inline: 'span', classes: 'example1' },
            { title: 'Example 2', inline: 'span', classes: 'example2' },
            { title: 'Table styles' },
            { title: 'Table row 1', selector: 'tr', classes: 'tablerow1' }
        ],

            // Replace values for the template plugin
            template_replace_values: {
                username: "Some User",
                staffid: "991234"
            }
        });
    </script>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>

        <br />

        <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">Update</asp:LinkButton>
    </div>
</asp:Content>

我的代码隐藏看起来像这样

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Test_TinyMCE
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            TextBox1.Text = Database.GetFirst().Text;
        }

        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            Database.Update(Database.GetFirst().ID, TextBox1.Text);

            TextBox1.Text = Database.GetFirst().Text;
        }
    }
}

最后我使用的“Database”类看起来像这样

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;

namespace Test_TinyMCE
{
    public class Database
    {
        public int ID { get; set; }
        public string Text { get; set; }

        public static void Update(int ID, string Text)
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["DatabaseConnection"]);
            connection.Open();

            try
            {
                SqlCommand command = new SqlCommand("Update Text set Text=@text where ID=@id");
                command.Connection = connection;

                command.Parameters.Add(new SqlParameter("id", ID));
                command.Parameters.Add(new SqlParameter("text", Text));
                command.ExecuteNonQuery();
            }
            finally
            {
                connection.Close();
            }
        }

        public static Database GetFirst()
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["DatabaseConnection"]);
            connection.Open();

            try
            {
                SqlCommand command = new SqlCommand("Select Top 1 ID, Text from Text order by ID asc");
                command.Connection = connection;

                SqlDataReader reader = command.ExecuteReader();
                if (reader.Read())
                {
                    Database item = new Database();
                    item.ID = reader.GetInt32(0);
                    item.Text = reader.GetString(1);
                    return item;
                }
                else
                {
                    return null;
                }
            }
            finally
            {
                connection.Close();
            }
        }
    }
}

我真的希望有人可以帮助我

I'm using TinyMCE, the text area is replaced with a TextBox, but when I try to update the database with the new text from my textbox, it wont update. Can anyone help me?

My code looks like this

<%@ Page Title="" Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Test_TinyMCE._default" ValidateRequest="false" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script src="JavaScript/tiny_mce/tiny_mce.js" type="text/javascript"></script>
    <script type="text/javascript">
        tinyMCE.init({
            // General options
            mode: "textareas",
            theme: "advanced",
            plugins: "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,pre    view,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,no    nbreaking,xhtmlxtras,template,wordcount,advlist,autosave",

            // Theme options
            theme_advanced_buttons1: "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
            theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
            theme_advanced_buttons3: "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
            theme_advanced_buttons4: "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
            theme_advanced_toolbar_location: "top",
            theme_advanced_toolbar_align: "left",
            theme_advanced_statusbar_location: "bottom",
            theme_advanced_resizing: true,

            // Example content CSS (should be your site CSS)
            // using false to ensure that the default browser settings are used for best Accessibility
            // ACCESSIBILITY SETTINGS
            content_css: false,
            // Use browser preferred colors for dialogs.
            browser_preferred_colors: true,
            detect_highcontrast: true,

            // Drop lists for link/image/media/template dialogs
            template_external_list_url: "lists/template_list.js",
            external_link_list_url: "lists/link_list.js",
            external_image_list_url: "lists/image_list.js",
            media_external_list_url: "lists/media_list.js",

            // Style formats
            style_formats: [
            { title: 'Bold text', inline: 'b' },
            { title: 'Red text', inline: 'span', styles: { color: '#ff0000'} },
            { title: 'Red header', block: 'h1', styles: { color: '#ff0000'} },
            { title: 'Example 1', inline: 'span', classes: 'example1' },
            { title: 'Example 2', inline: 'span', classes: 'example2' },
            { title: 'Table styles' },
            { title: 'Table row 1', selector: 'tr', classes: 'tablerow1' }
        ],

            // Replace values for the template plugin
            template_replace_values: {
                username: "Some User",
                staffid: "991234"
            }
        });
    </script>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>

        <br />

        <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">Update</asp:LinkButton>
    </div>
</asp:Content>

My codebhind looks like this

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Test_TinyMCE
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            TextBox1.Text = Database.GetFirst().Text;
        }

        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            Database.Update(Database.GetFirst().ID, TextBox1.Text);

            TextBox1.Text = Database.GetFirst().Text;
        }
    }
}

And finally the "Database" class im using looks like this

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;

namespace Test_TinyMCE
{
    public class Database
    {
        public int ID { get; set; }
        public string Text { get; set; }

        public static void Update(int ID, string Text)
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["DatabaseConnection"]);
            connection.Open();

            try
            {
                SqlCommand command = new SqlCommand("Update Text set Text=@text where ID=@id");
                command.Connection = connection;

                command.Parameters.Add(new SqlParameter("id", ID));
                command.Parameters.Add(new SqlParameter("text", Text));
                command.ExecuteNonQuery();
            }
            finally
            {
                connection.Close();
            }
        }

        public static Database GetFirst()
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["DatabaseConnection"]);
            connection.Open();

            try
            {
                SqlCommand command = new SqlCommand("Select Top 1 ID, Text from Text order by ID asc");
                command.Connection = connection;

                SqlDataReader reader = command.ExecuteReader();
                if (reader.Read())
                {
                    Database item = new Database();
                    item.ID = reader.GetInt32(0);
                    item.Text = reader.GetString(1);
                    return item;
                }
                else
                {
                    return null;
                }
            }
            finally
            {
                connection.Close();
            }
        }
    }
}

I really hope that someone out there can help me

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蒗幽 2024-12-25 09:38:57

我找到了另一个解决方案。我必须像这样在代码隐藏中添加 IsPostBack == false 。

protected void Page_Load(object sender, EventArgs e) 
    { 
        if (IsPostBack == false)
        {
            TextBox1.Text = Database.GetFirst().Text; 
        }
    }

I found another solution. I had to add IsPostBack == false in the codebehind like this.

protected void Page_Load(object sender, EventArgs e) 
    { 
        if (IsPostBack == false)
        {
            TextBox1.Text = Database.GetFirst().Text; 
        }
    }
寂寞花火° 2024-12-25 09:38:56

看起来您必须在将文本区域内容写入数据库之前调用以下(javascript):

tinymce.triggerSave();

这会将tinymce iframe内容写回到其根元素(您的情况下的文本框)。

Looks like you have to call the following (javascript) before you write your textarea content ti the database:

tinymce.triggerSave();

This will write the tinymce iframe contents back to their root element (the textbox in your case).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文