Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > DataGridView сохранение данных в файл


Автор: gta4kv 14.2.2008, 15:07
Всем привет! 

Собственно сабж, c# да и в .net новичок.

Есть DataGridView, с несколькими полями.

Надо сохранить данные из них в файл. ( txt/xml, неважно вообщем, и желательно не в базу )
А при загрузке программы все поля заполнить.

 smile 

Автор: tol05 14.2.2008, 17:27
при загрузке программы создаешь любой объект, поддерживающий
Цитата

The DataGridView class supports the standard Windows Forms data-binding model. This means the data source can be of any type that implements one of the following interfaces:

The IList interface, including one-dimensional arrays.

The IListSource interface, such as the DataTable and DataSet classes.

The IBindingList interface, such as the BindingList class.

The IBindingListView interface, such as the BindingSource class.


и биндишь его к DataGridView.DataSource 

ну а при записи в файл... Тут полная свобода творчества... Пробегаешь по строкам и столбцам грида, или по его источнику данных, или еще как угодно... Сколько соберешь инфы, столько и запишешь.
Писать можешь в любом виде и формате, тебе же потом этот файл читать... главное, чтоб ты потом, при чтении, получил объект для DataGridView.DataSource (ну об этом я уже говорил)

P.S. http://www.google.ru/search?complete=1&hl=ru&newwindow=1&rlz=1T4GGIH_ruUA256UA257&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=datagridview+serialization&spell=1 можно почитать что об этом думают другие  smile 

Автор: HellMasterHaiL 14.2.2008, 17:40
если есть датасет, то не проще 
Код

DataSet.WriteXML ("путь к файлу")
?

Автор: gta4kv 14.2.2008, 19:56
tol05, эх, щас буду пробовать.


HellMasterHaiL, он такого не знает!

Добавлено через 3 минуты и 24 секунды
HellMasterHaiL, ах дошло, добавил датаСет, но как им пользоваться?

Код

DataSet.WriteXML ("test.xml");


записал:
Код

<?xml version="1.0" standalone="yes"?>
<NewDataSet />


Добавлено через 8 минут и 43 секунды
Привязал dataSet к DataGridView, делаю writeXml записывает такую же фигню.. 

Автор: Legolas 14.2.2008, 22:47
пиши просто каждую строку в txt файл, разбивая к примеру, звездочкой. а при загрузке просто считывай в массив, и собственно, заполняй таблицу. Всё через обычные StreamReader, StreamWriter.

Автор: HellMasterHaiL 15.2.2008, 09:17
Цитата(gta4kv @ 14.2.2008,  19:56)
записал:
Код

<?xml version="1.0" standalone="yes"?>
<NewDataSet />


Добавлено @ 20:05
Привязал dataSet к DataGridView, делаю writeXml записывает такую же фигню..

походу у тебя не заполняется сам датасет... ты как записываешь данные в грид? ручками?

Автор: gta4kv 15.2.2008, 13:49
HellMasterHaiL, ну да.. а как надо?

Йа типа сделал просто кнопку save и прописал в нее ds.WriteXml("11111.xml");

Автор: HellMasterHaiL 15.2.2008, 14:36
для теста выведи месседж
messagebox.show (ds.имя таблици.rows(0).item(0))

по логике, если заполняется грид, то должен и заполняться сам датасет, но я всегда заполняю датасет, к которому привязан грид...

Автор: gta4kv 17.2.2008, 13:51
[удалите пожалуйста]

Автор: gta4kv 17.2.2008, 15:51
[удалите пожалуйста]

Автор: gta4kv 17.2.2008, 17:11
Сделал как сказал Legolas через файл. Все ловите плюсы.

Автор: EddieIrvine 15.3.2008, 00:01
Собственно, потребовалась помощь, и поисковик вывел меня сюда.

Понадобилось мне править чужой код (это долгая история...), суть в следующем: есть датагрид, нужно сохранить его содержимое в файл. Только такая фигня: при сохранении вся таблица датагрида обнуляется и уж потом только сохраняется. Я в этом дилетант, и что это за хрень, не знаю...

Вот как выглядит процедура сейчас:
Код

       private void SaveRowButton_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < MyArrayList_OfRecords.MyRec.Count; i++)
                {
                    storageServiceDataSet.Единицы_хранения.AddЕдиницы_храненияRow(Convert.ToInt32(MyArrayList_OfRecords.MyRec[i]), Convert.ToDateTime(MyArrayList_OfRecords.MyRecD(i)), Convert.ToString(MyArrayList_OfRecords.MyRecA[i]), Convert.ToString(MyArrayList_OfRecords.MyRecP[i]), Convert.ToString(MyArrayList_OfRecords.MyRecM[i]) );
                    storageServiceDataSet.AcceptChanges();
                }
                storageServiceDataSet.AcceptChanges();
                dataGridViewTable.DataSource = this.storageServiceDataSet.Единицы_хранения;
                dataGridViewTable.ReadOnly = true;
                storageServiceDataSet.WriteXml(@"..\..\data.xml");
            }
            catch(Exception exc)
            {
                MessageBox.Show(exc.ToString());
            }
        }


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)