Здравствуйте. Есть
DataGridView1, столбцы уже созданы и названы. Необходимо загрузить в эту таблицу данные из текстового файла.
Я написал следующий код, чтобы программно заполнять таблицу:
private void DataInput_Click(object sender, EventArgs e){
dataGridView1.Rows.Add("01.01.2022" "06:00" "Mersedes" "610-150" "6" "Иванов_Иван_Иванович" "Алексеев_Алексей_Алексеевич" 9999);
dataGridView1.Rows.Add("01.01.2022" "06:00" "Mersedes" "610-150" "6" "Иванов_Иван_Иванович" "Алексеев_Алексей_Алексеевич" 9999);
//И так далее
}
Однако мне-то нужна именно загрузка данных из файла, и как её реализовать я не понимаю. Я пробовал создать массив, в котором элементы являются необходимыми данными, и передать его в качестве параметра в
dataGridView1.Rows.Add(). И это работает, однако если задать значение массиву из, например, элемента TextBox (через запятую), то я просто получу длинную строку, которая пойдет в нулевой элемент массива.
Мне подсказали, что для этого (выгрузки данных из файла) нужно сделать 2 класса: один - класс шаблон
DataTemplate, второй - класс для считывания данных из текстового файла
LoadManager. Я их написал:
//Класс шаблон
using System;
using System.Collections.Generic;
using System.Text;
namespace Kursovaya
{
public class DataTemplate
{
public string DateWork { get; set; }
public string Time { get; set; }
public string BrandBus { get; set; }
public string CityNumber { get; set; }
public string RouteNumber { get; set; }
public string DriverName { get; set; }
public string CashierName { get; set; }
public int Income { get; set; }
public DataTemplate(string datework = "none",
string time = "none",
string brandbus = "none",
string citynumber = "none",
string routenumber = "none",
string drivername = "none",
string cashiername = "none",
int income = 0)
{
DateWork = datework;
Time = time;
BrandBus = brandbus;
CityNumber = citynumber;
RouteNumber = routenumber;
DriverName = drivername;
CashierName = cashiername;
Income = income;
}
}
}
И второй класс:
//Класс для считывания данных из текстового файла
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kursovaya
{
public class LoadManager
{
private bool PathCheck(string check)
{
if (!Directory.Exists(@"data"))
{
Directory.CreateDirectory(@"data");
return false;
}
else
{
if (File.Exists(check))
{
return File.ReadAllText(check).Length != 0;
}
return false;
}
}
public Dictionary<string, DataTemplate> InputData()
{
Dictionary<string, DataTemplate> inputdata = new Dictionary<string, DataTemplate>();
//Загрузка данных, если существуют
if (PathCheck(@"data\inputdata.txt"))
{
// Чтение файла сохранения и создания из него массива
string[] tmpRows = File.ReadAllText(@"data\inputdata.txt").Trim().Split('\n');
string[] tmpColumns;
foreach (string item in tmpRows)
{
tmpColumns = item.Split('>');
// Создаём новые данные
DataTemplate datatemplate = new DataTemplate(tmpColumns[0],
tmpColumns[1],
tmpColumns[2],
tmpColumns[3],
tmpColumns[4],
tmpColumns[5],
tmpColumns[6],
int.Parse(tmpColumns[7])
);
// Добавляем данные в словарь
inputdata.Add(datatemplate.DateWork, datatemplate);
}
}
return inputdata;
}
}
}
Был написан ещё один класс под названием SaveManager. Его назначение мне непонятно, но вроде как он должен помочь в решении задачи. Вот его код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kursovaya
{
public class SaveManager
{
private void PathCheck()
{
if (!Directory.Exists(@"data"))
{
Directory.CreateDirectory(@"data");
}
}
public void InputData(Dictionary<string, DataTemplate> inputdata)
{
PathCheck();
StringBuilder stringBuilder = new StringBuilder();
foreach (var item in inputdata)
{
stringBuilder.Append(string.Join(">", new string[]
{
item.Value.DateWork,
item.Value.Time,
item.Value.BrandBus,
item.Value.CityNumber,
item.Value.RouteNumber,
item.Value.DriverName,
item.Value.CashierName,
item.Value.Income.ToString()
}));
stringBuilder.Append("\n");
}
// Запись в файл
File.WriteAllText(@"data\inputdata.txt", stringBuilder.ToString());
}
}
}
Также была создана кнопка с соответствующим кодом:
private void button1_Click(object sender, EventArgs e)
{
SaveManager saveManager = new SaveManager();
saveManager.InputData(datatemplate);
}
А что делать дальше я так и не понял. Двигаюсь ли я вообще в правильном направлении? И что мне конкретно нужно сделать, чтобы данные вносились в dataGridView1 из текстового файла?