Я знаю, что это смешной вопрос, но Бог, я провел весь свой последний день, ударяя головой по нему, и это просто не сработает! Проклятый учитель даже не упоминал об импорте каких-либо данных в DataGridView!Чтение из TXT-файла, затем экспорт данных в DataGridView
У меня есть C# Windows Forms домашнее задание: Я должен прочитать данные из файла .txt
(пользователей) и вставить его в DataGridView таблицы в C# Microsoft Visual Studio 2012. Данные в файле users.txt
что-то вроде что с разделителями:
-------------------------------------------------
ID Name Surname Telephone VIP Age Balance
-------------------------------------------------
0001 John Killer 1-500-300 0 13 2272
0002 Name Surname 1-500-200 0 27 225
0003 Martin King 1-500-400 1 41 1070
Игнорировать имена меток (ID, имя, фамилия ...), я написал их только для наглядности, реальный файл имеет только исходные данные пользователей в нем.
Теперь я уже создал класс Users
, который имеет следующие поля:
- ID
- Имя
- Фамилия
- Телефон
- VIP
- Купил предметы
- Цена
, а затем создал DataGridView (usersDataGridView
) и импортировал поля из класса Users
.
ОК, алгоритмически это довольно простая задача, не так ли?
Моя идея делает следующее: чтение содержимого файла с StreamReader
, экономя каждую строку в строку, а затем разделив строку на части, используя \t
в качестве разделителя с String.Split
.
Однако, как только я разделил эти строки ... ну, я в принципе понятия не имею, как импортировать их в DataGridView (я знаю, что это должно быть как DataSource
, но ... пользовательский интерфейс Visual Studio 2012 кажется путь слишком «сложный» для меня, чтобы я мог понять, как я могу указать строку или любой другой тип данных, как DataSource).
Мои жалкие попытки привели меня к следующему:
Попытка 1:
public void Test_1()
{
string filePath = string.Format("{0}/databases/{1}", AppDomain.CurrentDomain.BaseDirectory, "user_db.txt");
string[] textData = System.IO.File.ReadAllLines(filePath);
string[] headers = textData[0].Split('\t');
DataTable dataTable1 = new DataTable();
foreach (string header in headers)
dataTable1.Columns.Add(header, typeof(string), null);
for (int i = 1; i < textData.Length; i++)
dataTable1.Rows.Add(textData[i].Split('\t'));
//Set the DataSource of DataGridView to the DataTable
promotionsDataGridView.DataSource = dataTable1;
}
Попытка 2:
public void ReadFromFile()
{
string delimeter = "\t";
string tableName = "BooksTable";
string fileName = string.Format("{0}/databases/{1}", AppDomain.CurrentDomain.BaseDirectory, "bigtest.sql");
DataSet dataset = new DataSet();
StreamReader sr = new StreamReader(fileName);
dataset.Tables.Add(tableName);
dataset.Tables[tableName].Columns.Add("InventoryID");
dataset.Tables[tableName].Columns.Add("Brand");
dataset.Tables[tableName].Columns.Add("Category");
dataset.Tables[tableName].Columns.Add("Description");
dataset.Tables[tableName].Columns.Add("Promotions");
dataset.Tables[tableName].Columns.Add("Quantity");
dataset.Tables[tableName].Columns.Add("Price");
string allData = sr.ReadToEnd();
string[] rows = allData.Split("\r".ToCharArray());
foreach (string r in rows)
{
string[] items = r.Split(delimeter.ToCharArray());
dataset.Tables[tableName].Rows.Add(items);
}
this.productsDataGridView.DataSource = dataset.Tables[0].DefaultView;
}
Однако я получаю ошибку ерунды как
Размер входного массива больше t Хань независимо
Поскольку у меня буквально нет опыта работы с DataGridView
я думаю, у меня есть некоторые ужасные ошибки на algorhitmic уровне, правильно ?!
Пожалуйста, никому, помогите!Я прочитал, скопировал, вставил, скомпилировал и отладил от 20 различных проблем по подобной теме, и я все еще нигде!
Что такое способ чтения данных из файла .txt
, а затем вставить его в DataGridView?
Любая помощь или оценка глубоко оценены!
Просто еще один глупый вопрос: в «Еогеасп (вар линии в File.ReadAllLines (путь))» ... э-э. .. Что такое «Файл»? Не могли бы вы это определить? – Placeholder
Его System.IO.File. Просто добавьте директиву using: using System.IO; –
Да, но это на самом деле: using System.IO; P.S: Попытка так сильно заставить его работать прямо сейчас, пожалуйста, перейди палец ко мне! :> – Placeholder