У меня есть класс
public class InfoPerson
{
public string FIO { set; get; }
public string Gender { set; get; }
public string YearOfBirth { set; get; }
public InfoPerson(string fio, string gender, string yearOfBirth)
{
FIO = fio;
Gender = gender;
YearOfBirth = yearOfBirth;
}
}
Есть DataGrid
Данные в DataGrid заполняю через DataBinding. После когда данные заполнены, мне нужно их сохранить в XML-файл по закрытию данной формы. И по открытию, чтобы данные подгружались с файла.
Пробовал такой код:
List<InfoPerson> infoPerson = new List<InfoPerson>();
public void SaveFile()
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<InfoPerson>));
using (FileStream fs = new FileStream("infopersons.xml", FileMode.OpenOrCreate))
{
xmlSerializer.Serialize(fs, infoPerson);
}
}
Но выдает исключение.
Не могу разобраться в чем причина, кто подскажет что я делаю не так?
Вроде разобрался, такой код работает
public BindingList<InfoPerson> InfoPerson { get; set; } = new BindingList<InfoPerson>();
public void Save(string FileName)
{
using (var writer = new StreamWriter(FileName))
{
var serializer = new XmlSerializer(InfoPerson.GetType());
serializer.Serialize(writer, InfoPerson);
writer.Flush();
}
}
Описываем класс, что нам надо
public class Person
{
public string Name {get;set;}
}
Пример нехитрой формы
public class MyForm : Form
{
DataGridView gv;
public MyForm()
{
gv = new DataGridView();
var bl = new BindingList<Person>();
bl.Add(new Person() {Name = ";flkjsdflsd"});
gv.DataSource = bl;
this.Controls.Add(gv);
var bt = new Button() {Text = "Save", Left = 250};
bt.Click+= (sender, args) => {
using(var sw = new StreamWriter(@"D:\temp\out.xml"))
{
var ser = new XmlSerializer(typeof(List<Person>));
ser.Serialize(sw, bl.ToList());
}
};
this.Controls.Add(bt);
}
}
Запуск
new MyForm().ShowDialog();
Результат
UPD
Форма вместе со считыванием.
public class MyForm : Form
{
DataGridView gv;
public MyForm()
{
gv = new DataGridView();
var bl = new BindingList<Person>();
bl.Add(new Person() { Name = ";flkjsdflsd" });
gv.DataSource = bl;
this.Controls.Add(gv);
var bt = new Button() { Text = "Save", Left = 250 };
bt.Click += (sender, args) =>
{
using (var sw = new StreamWriter(@"D:\temp\out.xml"))
{
var ser = new XmlSerializer(typeof(List<Person>));
ser.Serialize(sw, bl.ToList());
}
};
this.Controls.Add(bt);
bt = new Button() { Text = "Load", Left = 250, Top = 50 };
bt.Click += (sender, args) =>
{
using (var sr = new StreamReader(@"D:\temp\out.xml"))
{
var ser = new XmlSerializer(typeof(List<Person>));
var list = (List<Person>)ser.Deserialize(sr);
bl.Clear();
foreach (var p in list) bl.Add(p);
}
};
this.Controls.Add(bt);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Имеется селект для отчета на MySQLОтчет буду публиковать на SRSS
Есть панель управления которая находится на поддомене dashboardsite