Robmeister8911 Ответов: 1

Загрузите разделенный запятыми текст в datagridview на языке C#


Вот мой код сохранения:
string str = "";
                int row = dataGridView1.Rows.Count;
                int cell = dataGridView1.Rows[1].Cells.Count;
                for (int i = 0; i < row; i++)
                {
                    for (int j = 0; j < cell; j++)
                    {
                        if (dataGridView1.Rows[i].Cells[j].Value == null)
                        {
                            //return directly
                            //return;
                            //or set a value for the empty data
                            dataGridView1.Rows[i].Cells[j].Value = "";
                        }
                        str += dataGridView1.Rows[i].Cells[j].Value.ToString() + ",";
                    }
                }
                write.WriteLine(str);

                string str2 = "";
                int row2 = dataGridView2.Rows.Count;
                int cell2 = dataGridView2.Rows[1].Cells.Count;
                for (int i = 0; i < row2; i++)
                {
                    for (int j = 0; j < cell2; j++)
                    {
                        if (dataGridView2.Rows[i].Cells[j].Value == null)
                        {
                            //return directly
                            //return;
                            //or set a value for the empty data
                            dataGridView2.Rows[i].Cells[j].Value = "";
                        }
                        str2 += dataGridView2.Rows[i].Cells[j].Value.ToString() + ",";
                    }
                }
                write.WriteLine(str2);


Что я уже пробовал:

Вот код, который я пытался использовать, чтобы открыть его, но все, что он делает, это помещает всю строку в первый столбец.
foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    foreach (DataGridViewCell cell in row.Cells)
                    {
                        
                        cell.Value = read.ReadLine();
                    }
                }

j snooze

Я ничего не понимаю. В заголовке говорится, что вы пытаетесь загрузить разделенный запятыми текст в datagrid, но все, что я вижу, - это код, пытающийся написать разделенную запятыми строку из данных в datagrid. Что я упускаю?

j snooze

кстати, я бы также рекомендовал сделать метод для передачи в datagridview и возврата строки вывода, в основном у вас есть точно такой же код дважды, за исключением того, что вы должны были назвать все переменные с "2" на них. Когда вы видите повторяющийся код, это хороший кандидат для одного метода.

Robmeister8911

Верхний-это небольшой фрагмент кода сохранения, который сохраняет строки datagridview в текстовый файл.. Нижняя коробка - это маленький фрагмент того, как я пытаюсь его загрузить.

Вот весь код streamreader:
частная OpenToolStripMenuItem_Click_1 недействительным(объект отправителя, EventArgs в электронной)
{
ОФД.Фильтр = "WAP и файлы (*.планшета можно без регистрации)|*.планшета можно без регистрации";
ОФД.Title = " Открыть Файл";

if (ofd. ShowDialog() == DialogResult.ОК)
{
StreamReader read = новый StreamReader(файл.OpenRead(ofd. FileName));
textBox54.Текст = читать.Линия чтения();


comboBox42.Текст = чтение.Линия чтения();

richTextBox23.Текст = чтение.Линия чтения();

checkBox18.Проверено = Конвертировать.ToBoolean(читать.Линия чтения());

по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{
по каждому элементу (объект datagridviewcell ячейки в строке.Ячейки)
{
ячейка.Значение = чтение.Линия чтения();
}
}

foreach (DataGridViewRow row2 в dataGridView2. Rows)
{
foreach (DataGridViewCell cell2 в row2. Cells)
{
ячейка 2. Значение = чтение.Линия чтения();
}
}


система VAR loadedFileName=.ИО.Путь.GetFileName(ОФД.Именем);

label90.Text = loadedFileName;
именем = loadedFileName;

читать.Закрывать();
читать.Располагать();
}

}

1 Ответов

Рейтинг:
1

CHill60

Вместо использования ReadLine попробуйте рассматривать CSV-файл как базу данных и использовать ODBC или OleDb для чтения файла. Здесь есть несколько статей о CodeProject, которые могут вам помочь ...
Чтение текстового файла (txt, csv, log, tab, фиксированная длина)[^]
Использование OleDb для импорта текстовых файлов (tab, CSV, custom)[^]
(Есть и другие).
Как только у вас есть информация в наборе данных или datatable, вы можете использовать ее в качестве DataSource для вашего элемента управления datagridview


Robmeister8911

Я использую ReadLine, потому что у меня есть гораздо больше, чем несколько datagridviews в моей программе. Я загружаю более 50 текстовых полей, 18 флажков, 21 richtextboxes и 42 comboboxes. Таким образом, 2 вида datagridviews минимальны..

Смогу ли я по-прежнему читать все это, уйдя от streamreader [если я вас не понимаю]?

CHill60

Я предполагаю, что вы сохраняете datagridviews в отдельные файлы? В этом случае вы все еще можете прочитать их так, как я предложил. Вы можете найти эту статью более полезной Класс C#: текстовый файл как база данных[^] но если вы хотите сэкономить все из содержания элементов управления то эта статья наверное лучше Сохранения (сериализации) в форме Windows [^]

Robmeister8911

Нет, все данные сохраняются в одном файле. Это делается для того, чтобы, когда пользователь открывает программу, он открывал файл, который ему нужно отредактировать, и все его данные отображались в полях.

CHill60

В этом случае последняя ссылка, которую я дал в своем комментарии выше, была бы уместна