Problem z DGV - odczyt z pliku *.txt

0

Hej, mam dzisiaj jakąś pustkę w głowie. :)

Otóż mój problem, mam zrobiony zapis danych z DGV (DataGridView), ale męczę się dzisiaj pół dnia i nie mogę stworzyć odczytu tych danych po kliknięciu w nowo otwartej formie.

Kod aplikacji (trochę wyrzuciłem co się nie dotyczy tego problemu):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace testowa_aplikacja
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SaveDataGridView(@"c:dane.txt", dataGridViewXXX);

        }

        public void SaveDataGridView(string fileName, DataGridView dataGridViewXXX)
        {
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < dataGridViewXXX.ColumnCount; i++)
                builder.AppendFormat(i == (dataGridViewXXX.Columns.Count - 1) ? "  {0}" : "    {0}   ||", dataGridViewXXX.Columns[i].HeaderText);
            builder.AppendLine();
            builder.Append("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            for (int i = 0; i < dataGridViewXXX.RowCount; i++)
            {
                builder.AppendLine();
                foreach (DataGridViewCell cell in dataGridViewXXX.Rows[i].Cells)
                    builder.AppendFormat(cell.ColumnIndex == (dataGridViewXXX.Columns.Count - 1) ? "  {0}" : "    {0}   ||", cell.Value);
            }

            if (File.Exists(fileName))
                File.Delete(fileName);
            File.WriteAllText(fileName, builder.ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
  
        }

    }
}
0

Ja tu żadnego odczytu nie widzę. Nie rozumiem też problemu.
Zobacz przykład na msdn jeżeli nie wiesz jak wypełniać samodzielnie dane:
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx

0

ajjj, nie o to mi chodzi @up. Chodzi o funkcje odczytu z pliku "dane.txt" do DataGridView :) która będzie uruchamiana z buttona. :)

0

Możesz tak:

string fileContent = new StreamReader("dane.txt").ReadToEnd();

Możesz tak:

StreamReader reader =  new StreamReader("dane.txt");
string line = null;
while ((line = reader.ReadLine())!=null)
{
   //tutaj odczyt danych i wypełnianie datagird
}
Reader.Close();

Sposobów wiele :P

0

Nie do końca o to mi chodz. :|

Mam DataGridView na formie i po debugowaniu wpisałem sobie w niego Smerf, Smerfetka, Lola, Kacper i kliknąłem na button 1, który jest oprogramowany z funkcją zapisu do pliku o nazwie "dane.txt".
A teraz po ponownym debugowaniu chcę zrobić odczyt danych, czyli po kliknięciu w button 2, ma wyświetlić te dane w DataGridView z tego pliku "dane.txt". :)

0

No tak bo o gotowca ci chodzi. Poznaj moje dobre serce.

StreamReader reader =  new StreamReader("dane.txt");
string line = null;
while ((line = reader.ReadLine())!=null)
{
   dataGridViewXXX.Rows.Add(line.Split(new string[] {"||"},StringSplitOptions.RemoveEmptyEntries).Select(s=>s.Trim()).ToArray());
}
Reader.Close();

Pisane na sucho więc nic nie gwarantuję.

1

jak ma wyglądać, to ominięcie tych pierwszych linii??

Tak jak chcesz - byle działało :P

Sprawdź to:

StreamReader reader =  new StreamReader("dane.txt");
string line = reader.ReadLine(); //wczytanie pierwszej linijki - będzie nadpisane
while ((line = reader.ReadLine())!=null)
{
   if(!line.StartsWith("~~") && line != String.Empty)
   {
      dataGridViewXXX.Rows.Add(line.Split(new string[] {"||"},StringSplitOptions.RemoveEmptyEntries).Select(s=>s.Trim()).ToArray());
   }
}
Reader.Close();

1 użytkowników online, w tym zalogowanych: 0, gości: 1