Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 17

Реализация сериализации xml

04.12.2018, 22:48. Показов 1778. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени,
Создаю класс, кидаю объекты в List, потом привязываю к datagridwiew для отображения. Делал всё по рабочему примеру, но почему-то возникла следующая проблема:
не добавляет/изменяет файл .xml
КОД:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
public partial class mainForm : Form
    {
        List<Tovar> tovars = null;
        public mainForm()
        {
            
            InitializeComponent();
            CenterToScreen();
            //добавляем в лист несколько товаров
            tovars = new List<Tovar>()
            { 
};
            [COLOR="Green"]//обновляем datagrid[/COLOR]
            UpdateGrid();
        }
 
        private void UpdateGrid()
        {
            if (tovars !=null)
            {
                //создаем таблицу dataTable с именем inventory
                var table = new DataTable("inventory");
                //создаем объекты dataColumn
                var date =new DataColumn("дата");
                var vid = new DataColumn("вид");
                var firma = new DataColumn("фирма");
                var cena = new DataColumn("цена");
                var kolvo = new DataColumn("количество проданного товара");
                [COLOR="green"]//добавляем объекты в dataTable[/COLOR]
                table.Columns.Add(date);
                table.Columns.Add(vid);
                table.Columns.Add(firma);
                table.Columns.Add(cena);
                table.Columns.Add(kolvo);
                [COLOR="green"]// для каждого элемента создаем строку в таблице[/COLOR]
                foreach (Tovar tovar in tovars)
                {
                    DataRow row = table.NewRow();
                    row["дата"] = tovar.date;
                    row["вид"] = tovar.vid;
                    row["фирма"] = tovar.firma;
                    row["цена"] = tovar.cena;
                    row["количество проданного товара"] = tovar.kolvo;
                    table.Rows.Add(row);
                }
                [COLOR="green"]//биндим dataTable к dataGridView[/COLOR]
                dataGridView1.DataSource = table;
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            var dialog = new FormDialog();
            if (dialog.ShowDialog()==DialogResult.OK)
            {
                tovars.Add(dialog.tovar);
                UpdateGrid();
            }
        }
 
        private void сохранитьToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            
             
            saveFileDialog1.InitialDirectory = ".";
            saveFileDialog1.Filter = "XML|*.xml";//"tovar files (*.tovar)|*.tovar|All files(*.*)|*.*";
            saveFileDialog1.FilterIndex = 1;
            saveFileDialog1.RestoreDirectory = true;
            saveFileDialog1.FileName = "tovarDoc";
            if (saveFileDialog1.ShowDialog()==DialogResult.OK)
            {
                Stream myStream = saveFileDialog1.OpenFile();
                var serializer = new BinaryFormatter();
                serializer.Serialize(myStream, tovars);
                myStream.Close();
            }
        }
 
        private void открытьToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
           
             openFileDialog1.InitialDirectory = ".";
             openFileDialog1.Filter = "XML|*.xml";
             openFileDialog1.FilterIndex = 1;
             openFileDialog1.RestoreDirectory = true;
             if (openFileDialog1.ShowDialog()==DialogResult.OK)
             {
                 tovars.Clear();
                 Stream stream = openFileDialog1.OpenFile();
                 var desirializer = new BinaryFormatter();
                 tovars = desirializer.Deserialize(stream) as List<Tovar>;
                 stream.Close();
                 UpdateGrid();
             }
        }
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void clearAll_Click(object sender, EventArgs e)
        {
            tovars.Clear();
            UpdateGrid();
        }
    }
выполнял по примеру:https://www.youtube.com/watch?v=H2tnmD_rTpY
прошу прощения, если нарушил правила оформления
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2018, 22:48
Ответы с готовыми решениями:

Исключение InvalidOperationException при XML сериализации
При выполнении вот такого кода XmlSerializer xml = new XmlSerializer(typeof(NeuralNetwork)); выдает исключение ...

Передача *.xml по сети с использованием де/сериализации
Гугл и Яндекс не помог, я так и не разобрался. Задача с сервера передать xml файл клиенту. Делаю тестер для класса. На сервере...

Комментарии при сериализации класса в xml
Здравствуйте. Вот я делаю серилизацию таким образом public bool SaveSettings() { try { ...

27
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 17
06.12.2018, 23:47  [ТС]
Студворк — интернет-сервис помощи студентам
PoPsa85, а как быть в этом случае? нужно построить график для заданного вида товара. функция цены от количества
попробовал так... там, где __<length не знаю что применить, может счетчик обычный, но все равно уверен, что есть гуманнее и правильнее решение.
private void button3_Click(object sender, EventArgs e)
C#
1
2
3
4
5
6
7
8
9
10
11
{
            var a = TovarsCollection.tovars.Where(x => x.vid == "видео").Select(x => x.kolvo).ToList();
            a.ForEach(x => listBox3.Items.Add(x));//для проверки
            var b = TovarsCollection.tovars.Where(x => x.vid == "видео").Select(x => x.cena).ToList();
            b.ForEach(x => listBox3.Items.Add(x));//для проверки
 
             chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            for (int i = 0; i < a.Lenght; i++)
                chart1.Series[0].Points.AddXY(a, b);
 
        }
очень нужна ваша помощь!!!=) спасибо
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.12.2018, 00:37
kenny187, На a.Count поменяйте
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 17
07.12.2018, 00:44  [ТС]
PoPsa85, выдало ошибку
"Точки данных ряда не поддерживают значения типа System.Collections.Generic.List`1[System.Int32], допускается использование значений только следующих типов: Double, Decimal, Single, int, long, uint, ulong, String, DateTime, short, ushort."
Это значит мне надо конвертировать как-то лист или значения переменных?помогите, пожалуйста)
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.12.2018, 00:54
kenny187, Потому что
C#
1
chart1.Series[0].Points.AddXY(a[i], b);
1
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 17
07.12.2018, 00:58  [ТС]
PoPsa85, Спасибо!!!!!!!!!!
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.12.2018, 01:05
kenny187, В общем правильно и без лишних циклов, что был график цены и количества, нужно сделать так. Это для примера, свои значения поставте.
C#
1
2
3
            var a = TovarsCollection.tovars.Where(x => x.vid == "видео").Select(n =>new { Price = n.cena, Kol = n.kolvo }).ToList();
            foreach (var item in a)
                chart1.Series[0].Points.AddXY(item.Price, item.Kol);
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 17
07.12.2018, 02:14  [ТС]
PoPsa85, спасибо, а как сделать, чтобы график чертился по возрастанию значений.. То есть у меня выходит так, что он сам с собой пересекается и делает петли)) То есть если у меня идет количество 10 и цена 100, а потом идет количество 3 и цена любая, то линия вернется назад... как это исправить. а также на осях подписываются минусовые значения, куда график конечно не залезет, но это я сейчас поищу
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.12.2018, 10:55
kenny187, Может вы не правильно задание поняли. Вообще график цены и количества, это странно. Что будет показывать такой график ? Если изменить тип на Bar например, еще более-менее понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2018, 10:55

Ошибка InvalidOperationException при Xml сериализации
Здравствуйте! У меня возникла проблема при xml сериализации. Суть проблемы такова, я хочу сохранить список List&lt;myReference&gt; в...

Как избавиться от мусора при XML сериализации?
Добрый день. Ситуация такая. Есть класс содержащий список определённых свойств. Программа имеет возможность загрузки их из XML и,...

DataContractSerializer при xml сериализации затрагивает игнорируемые поля
Привет всем. Вот класс, который я сериализую: public class FileMetaInfo { public string Hash {...

Возникла ошибка при отражении типа во время XML сериализации
В строке using (Stream Read = File.Create(FileName)) { FilialList = new...

Параметры сериализации XML
Доброго времени суток. Для xml-сериализации использую следующий метод: private static string ToXMLString(object obj, Type objType) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru