2013-04-13 68 views
11

我是wpf的新手,我想將格式(斜體,彩色,粗體..)的富文本框的數據與其格式(斜體,彩色,粗體..)一起存儲到數據庫(Mysql)中。 當前當我保存數據時,格式將被忽略。 此外,當我將它加載回數據庫的富文本框時,它顯示了同一行中的所有文本。 期待您的幫助和建議!將格式化富文本框的數據存儲到數據庫

public void save() 
    { 

     MySqlConnection conn = new MySqlConnection(connString); 
     MySqlCommand command = conn.CreateCommand();  
     string richText = new TextRange(rt1.Document.ContentStart, rt1.Document.ContentEnd).Text; 

     string s = WebUtility.HtmlEncode(richText); 
     command.Parameters.AddWithValue("@s", s);   
     command.CommandText = "insert into proc_tra (procedures) values (@s)"; 
     conn.Open(); 
     command.ExecuteNonQuery(); 
     conn.Close(); 
    } 

public void load() 

    { MySqlConnection conn = new MySqlConnection(connString); 
     MySqlCommand command = conn.CreateCommand(); 
     command.CommandText = "select * from proc_tra where id_pt=4"; 
     rt1.Document.Blocks.Clear();    
     conn.Open();    
     MySqlDataReader dr; 
     dr = command.ExecuteReader(); 
     string k="";   
     while (dr.Read()) 
     {    
      k += dr["procedures"].ToString(); 
     } 
     var p = new Paragraph(); 
     var run = new Run(); 
     run.Text = WebUtility.HtmlDecode(k); 
     p.Inlines.Add(run); 
     rt1.Document.Blocks.Add(p); 
    } 
+0

hope [this](http://www.codeguru.com/columns/dotnettips/article.php/c7529/Saving-Rich-Edit-Control-Text-to-SQL-Server.htm)幫助 – Pyromancer

回答

20

要獲得將被保存在數據庫格式的文本:

string rtfText; //string to save to db 
TextRange tr = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); 
using (MemoryStream ms = new MemoryStream()) 
{ 
    tr.Save(ms, DataFormats.Rtf); 
    rtfText = Encoding.ASCII.GetString(ms.ToArray()); 
} 

要恢復從數據庫中檢索到的格式化文本:

string rtfText= ... //string from db 
byte[] byteArray = Encoding.ASCII.GetBytes(rtfText); 
using (MemoryStream ms = new MemoryStream(byteArray)) 
{ 
    TextRange tr = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); 
    tr.Load(ms, DataFormats.Rtf); 
} 

您還可以使用XAML格式而不是使用DataFormats.XAML加載保存。

+3

非常感謝!它像一個魅力^^ –

+0

Dosent工作親愛的,顯示richtextbox沒有任何定義稱爲文檔。 –

+1

@SharadAg。這是爲WPF,而不是WinForms。 – TEK

0

嘗試這樣:

RichTextBox richTextBox = new RichTextBox(); 
string richText = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd).Text; 

然後將其保存到MySQL時,你可以建立這樣的查詢:

string query = "INSERT INTO blah VALUES ('" + HTTPUtility.HtmlEncode(richText) + "'); 

這將確保您的內容保持格式正確。

最後,當你執行你的選擇將內容加載回來到RichTextBox採取字符串所得到和使用:

HTTPUtility.HtmlDecode(selectedDataFromMySQL); 

,或者更徹底:

richTextBox.Document.Blocks.Clear(); 
richTextBox.Document.Blocks.Add(new Paragraph(HTTPUtility.HtmlDecode(selectedDataFromMySQL); 

雖然我沒有我自己做了一段時間,我相信WPF和包含Text屬性的控件有一個擴展,所以也可能證明它有用。

+0

thx for答案,但'HttpUtility'不存在於當前的情況下,即使我添加system.web –

+0

我已經添加了對System.Web的引用和使用System.Web但仍然無法正常工作 –

+0

請確保您的項目沒有針對客戶端配置文件框架在您的項目屬性中。 –

相關問題