/ / फ़ॉर्मेटिंग के साथ डेटाबेस में रिच टेक्स्ट बॉक्स का डेटा संग्रहीत करना - c #, mysql, wpf, database, richteboxbox

स्वरूपण के साथ डेटाबेस में समृद्ध टेक्स्ट बॉक्स का डेटा संग्रहीत करना - सी #, mysql, wpf, डेटाबेस, richtextbox

मैं wpf में नया हूँ और मैं डेटा स्टोर करना चाहता हूँरिच टेक्स्ट बॉक्स एक फॉर्मेट (मैसकल) में अपने फॉर्मेटिंग (इटैलिक, कलर्ड, बोल्ड ..) के साथ। वर्तमान में जब मैं डेटा सहेजता हूं, तो स्वरूपण को अनदेखा कर दिया जाता है। इसके अलावा, यह एक ही पंक्ति में सभी पाठ दिखाता है जब मैं इसे डेटाबेस से समृद्ध पाठ बॉक्स पर वापस लोड करता हूं। आपकी मदद और सुझावों की प्रतीक्षा है!

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);
}

उत्तर:

उत्तर № 1 के लिए 20

प्रारूपित पाठ प्राप्त करने के लिए जिसे db में सहेजा जाएगा:

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());
}

DB से पुनर्प्राप्त स्वरूपित पाठ को पुनर्स्थापित करने के लिए:

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 प्रारूप का उपयोग कर सकते हैं।


जवाब के लिए 0 № 2

इस तरह कुछ कोशिश करें:

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) +  "");

यह सुनिश्चित करेगा कि आपकी सामग्री सही ढंग से स्वरूपित रहे।

अंत में जब आप सामग्री का चयन करने के लिए रिचटक्स्टबॉक्स में वापस लोड करने के लिए अपना प्रदर्शन करते हैं तो आपको जो स्ट्रिंग मिलती है उसका उपयोग करें

HTTPUtility.HtmlDecode(selectedDataFromMySQL);

या, पूरी तरह से:

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

जबकि मैंने कुछ ही समय में ऐसा नहीं किया है, मेरा मानना ​​है कि WPF और नियंत्रण के लिए एक एक्सटेंशन है जिसमें एक पाठ गुण शामिल है ताकि उपयोगी भी साबित हो सके।