简体   繁体   中英

How do I make my DataGridView read info of a text file C#

so my issue is that, I can´t make my DataGridView read information from a text file already created, don´t know what to do really, I am kinda new to C#, so I hope you can help me :D

Here is my code to save the values from my grid:

private void buttonGuardar_Click(object sender, EventArgs e)
{
    string[] conteudo = new string[dataGridView1.RowCount * dataGridView1.ColumnCount];
    int cont = 0;
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        foreach (DataGridViewCell cell  in row.Cells)
        {
            conteudo[cont++] = cell.Value.ToString();
        }
    }
    File.WriteAllLines("dados.txt", conteudo);

And now, from a different form, there is another Grid that must be fill with the values saved in that File The present code:

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


namespace WindowsFormsApplication31
{
    public partial class Form3 : Form
    {
        DateTime start, end;

        private void Form3_Load(object sender, EventArgs e)
        {
            textBox1.Text = start.ToString("dd-MM-yyyy");
            textBox2.Text = end.ToString("dd-MM-yyyy");
        }

        public Form3(DateTime s, DateTime e)
        {
            InitializeComponent();
            start = s;
            end = e;
        }
    }
}

In conclusion, both of the grid should have 4 Cells:

0-Designação 1-Grupo 2-Valor 3-Data

And the second one from Form3, should read the text file, in the right order

Hope you can help me, Thanks.

Please try this below. I have exported the grid data in to a text file as same structure as how it appears in grid as below.

    private void button1_Click(object sender, EventArgs e)
    {
        TextWriter writer = new StreamWriter("Text.txt");
        for (int i = 0; i < DataGridView1.Rows.Count; i++)
        {
            for (int j = 0; j < DataGridView1.Columns.Count; j++)
            {
                writer.Write(DataGridView1.Rows[i].Cells[j].Value.ToString() + "\t");
            }
            writer.WriteLine("");

        }
        writer.Close();
    }

Created a new class with properties as the column names and a method to load the exported data into a list collection of class as shown below.Here in this example ,my grid has two columns Name and Marks.so i declared those two properties in my user class

using System;
using System.Collections.Generic;
 using System.Linq;
 using System.Text;
using System.IO;

 namespace WindowsFormsApplication1
 {
public class User
{

    public string Name { get; set; }
    public string Marks { get; set; }


    public static List<User> LoadUserListFromFile(string path)
    {
        var users = new List<User>();

        foreach (var line in File.ReadAllLines(path))
        {
            var columns = line.Split('\t');
            users.Add(new User
            {
                Name = columns[0],
                Marks = columns[1]

            });
        }

        return users;
    }
}}

Now on the form load event of second form,call the above method and bind to the second grid as shown below

    private void Form2_Load(object sender, EventArgs e)
    {
        dataGridView2.DataSource = User.LoadUserListFromFile("Text.txt");

    }

Pleas mark this as answer,if it helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM