Ja kiedyś coś takiego robiłem i wymyśliłem na szybko takie rozwiązanie.
To czy jest dobre oceń sam:
Stworzyłem sobie obiekt Table, który serializuję.
[Serializable]
public class Table
{
private List<String> _rows;
public Table()
{
this._rows = new List<string>();
}
public void AddRow(string row)
{
this._rows.Add(row);
}
public override string ToString()
{
StringBuilder builder = new StringBuilder();
this._rows.ForEach(delegate(String row) { builder.AppendLine(row); });
return builder.ToString();
}
public string SerializeToString()
{
TextWriter writer = null;
try
{
writer = new StringWriter();
XmlSerializer serializer = new XmlSerializer(typeof(List<String>));
serializer.Serialize(writer, this._rows);
string value = writer.ToString();
return value;
}
finally
{
if (writer != null)
writer.Close();
}
}
public static Table FromSerializeString(string value)
{
Table tab = new Table();
TextReader stream = null;
try
{
stream = new StringReader(value);
XmlSerializer serializer = new XmlSerializer(typeof(List<String>));
tab._rows = (List<String>)serializer.Deserialize(stream);
return tab;
}
finally
{
if (stream != null)
stream.Close();
}
}
}
Przykład użycia:
Table table = new Table();
//Dane: Imie Nazwisko Miasto
table.AddRow("Ala Ibacka Poznań");
table.AddRow("Katarzyna Rogowska Ełk");
string serialize = table.SerializeToString();
Console.WriteLine("Serializacja XML");
Console.WriteLine(serialize);
table = Table.FromSerializeString(serialize);
Console.WriteLine("Deserializacja:");
Console.WriteLine(table.ToString());
To jest napisane w C# ale konwersja na zarządzany C++ nie powinna sprawić Ci kłopotu.
Wiersz w datagrid przedstawiam jako string, gdzie kolumny rozdzielone są spacją.
Metoda serializuje obiekt do stringa, z którym możesz zrobić wszystko ;)