powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Сериализация DataSet
2 сообщений из 2, страница 1 из 1
Сериализация DataSet
    #37174506
Сашша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Сериализую обьект:

Код: plaintext
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.
1

 
System.Xml.Serialization.XmlSerializer ser =
                new System.Xml.Serialization.XmlSerializer(typeof(DataSet));
 
            DataSet dSet = new DataSet();
            DataTable dTable = new DataTable();
 
 
            for (int i = 0; i < dgvProduct.Columns.Count; i++)
            {
                //добавили колонки
                dTable.Columns.Add(new DataColumn(dgvProduct.Columns[i].HeaderText));
            }
 
            for (int j = 0; j < dgvProduct.Rows.Count; j++)
            {
                DataRow r = dTable.NewRow();
                for (int i = 0; i < dgvProduct.Columns.Count; i++)
                {
                    if (dgvProduct.Rows[j].Cells[i].Value != null)
                    {
                        r[i] = dgvProduct.Rows[j].Cells[i].Value.ToString();
                    }
                    else
                    {
                        r[i] = "";
                    }
                }
                dTable.Rows.Add(r);
            }
 
            dSet.Tables.Add(dTable);
 
            dgvProduct.Columns.Clear();
 
            dgvProduct.DataSource = dSet.Tables[0];
 
            dgvProduct.Columns[1].Width = 400; //это надо где-нить в свойствах таблицы прописать            
 
            System.IO.TextWriter tWriter = new System.IO.StreamWriter(@"C:\d.xml");
            ser.Serialize(tWriter, dSet);
            tWriter.Close();
Все работает=)

Отлично сериализуется, все дела

В той же программе:
я получаю данные не из обычного текстового файла, а из екселя sql-запросами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
        public void GetFrom(string name, System.Windows.Forms.DataGridView dgv)
        {
            System.Data.DataSet ds = new System.Data.DataSet();
 
            string ConnectionString =
                String.Format(
                "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=No\";Data Source={0}", name);
 
            OleDbConnection cn = new OleDbConnection(ConnectionString);
            cn.Open();
 
            // Получаем списко листов в файле            
            //System.Data.DataTable schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
            //    new object[] { null, null, null, "TABLE" });
 
            // Берем номер листа
            //string sheet1 = (string)schemaTable.Rows[0].ItemArray[2];
            string select = String.Format("SELECT * FROM [{0}]", @"Заказ$");
 
            OleDbDataAdapter ad = new OleDbDataAdapter(select, cn);
            this.Table = new System.Data.DataTable();
            ad.Fill(this.Table);
 
            dgv.DataSource = this.Table;
        }

считываю их в DataGV, все отлично отображается)

далее, я пытаюсь его сериализовать:

Код: plaintext
1.
2.
3.
4.
5.
                        CamIn.GetFrom(openFileDialogComeIn.FileName, dgv);
                        //    this.Add_ComeIn(openFileDialogComeIn.FileName, folds[0]);
                                                
                        this.ToFolds(folds[0], openFileDialogComeIn.SafeFileName, CamIn.Table);
 
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
            System.IO.StreamWriter sW = new System.IO.StreamWriter(@"1.xml");
            //System.Xml.XmlWriter wr = new System.Xml.XmlTextWriter(@"DFolders1.xml", Encoding.UTF8);
            //System.IO.StreamWriter sW = new System.IO.StreamWriter(@"DFolders1.xml");
            //System.IO.FileStream fS = new System.IO.FileStream(@"DFolders.xml", System.IO.FileMode.OpenOrCreate);
            
 
            System.Xml.Serialization.XmlSerializer ser =
                new System.Xml.Serialization.XmlSerializer(typeof(DataSet));
            DataSet dSET = folds.ToData();
 
 
            ser.Serialize(sW, dSET);
 
            //bf.Serialize(fS, DFolds);//не получается сериализовать? почему?
            sW.Close();

но он сериализует только названия таблиц.

Странно думаю, делаю стоп-пойнт на строчке

DataSet dSET = folds.ToData();
Думаю, может они в датасете не записаны: читаю каждую строчку в Immidiat Window - все отлично, каждый элемент на своем месте

Нажимаю Ф5 - и в следующей строчке ничего не сериализуется опять, кроме названия таблиц?

Что за дела? Уже вторые сутки мучаюсь? Готов поверить в любую теорию, Он почемуто не сериализует именно данные считанные из эксель, потому что когда я добавил в последний код запись:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
           DataTable dTabl = new DataTable("NewTabl");
            DataColumn dC = new DataColumn("NewCol");
            dTabl.Columns.Add(dC);

            DataRow dR = dTabl.NewRow();
            dR["NewCol"] = "Item";
            dTabl.Rows.Add(dR);
            dSET.Tables.Add(dTabl);
он ее спокойно сериализовал :)
...
Рейтинг: 0 / 0
Сериализация DataSet
    #37174515
Сашша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтобы не было путаницы открою код пары приведенных выше функций:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
       public void ToFolds(DFolder f, string firm, DataTable _table)
        {
 
 
            for (int i = 0; i < _table.Rows.Count; i++)
            {
                DString dS = new DString();
                dS.Art = Convert.ToInt32(DateTime.Today.Day.ToString() +
                    DateTime.Today.Month.ToString() +
                    DateTime.Today.Year.ToString() +
                    DateTime.Today.TimeOfDay.Hours.ToString()) + i;
                dS.Name = Convert.ToString(_table.Rows[i].ItemArray[0]);
                dS.theCount = Convert.ToInt32(_table.Rows[i].ItemArray[1]);
                dS.Firstcost = Convert.ToInt32(_table.Rows[i].ItemArray[2]);
                dS.Secondcost = Convert.ToInt32(_table.Rows[i].ItemArray[3]);
                dS.theDate = DateTime.Today.Date;
                dS.Firm = firm;
                dS.ParentFolder = f;
 
                f.Add(dS);
            }
 
        }
и
Код: plaintext
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.
        public System.Data.DataSet ToData()
        {
            System.Data.DataSet dS = new System.Data.DataSet();
            for (int i = 0; i < this.Count; i++)
            {
                dS.Tables.Add(this[i].Name);
 
                for (int c =0; c<6;c++)
                {
                    dS.Tables[i].Columns.Add("Столбец" + c.ToString());
                }
 
                //создало колонки
 
                for (int n = 0; n < this[i].Count; n++)
                {
 
                    dS.Tables[i].Rows.Add(
                        new string[]{
                            (string)this[i][n].Art.ToString().Clone(),
                            (string)this[i][n].Name.ToString().Clone(),
                            (string)this[i][n].theCount.ToString().Clone(),
                            (string)this[i][n].Firstcost.ToString().Clone(),
                            (string)this[i][n].Secondcost.ToString().Clone(),
                            (string)this[i][n].Firm.ToString().Clone()
                        });
 
                }
                //создало строки
            }

(string)this[i][n].Secondcost.ToString().Clone(), - это уже просто от отчаяния, мало ли может этот OLEDB ссылочный: читает базы и после удаления убивает все, что прочитал.

В общем сложная ситуация, кто может что сказать?
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Сериализация DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]