Как отобразить каждый набор данных в списке в новой строке? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть DataGridView, где я хочу загрузить данные в виде строк из списка.
Я хочу, чтобы данные загружались горизонтально (переход к следующему столбцу), а не вертикально (переход к новой строке), для каждогонабор в списке.
Этот DataGridView имеет фиксированное количество столбцов, и, поскольку это список, число строк зависит от количества наборов в списке.

Моя проблема с моим кодом состоит в том, что вместо добавления новой строки для последующего набора в Списке он просто заменяет первый набор данных в Списке.
Так как мне отобразить каждый наборданные в новом ряду?

Мой код:

private void Form1_VisibleChanged(object sender, EventArgs e)
{
    dataGridView2.ColumnCount = 9;

    for (int i = 0; i < dataGridView2.Columns.Count; i++)
    {
        foreach (string item in Class1.DTG2_list)
        {
            int counter = 0;
            if (item == string.Empty)
                dataGridView2.Rows[counter].Cells[i].Value = false.ToString();
            else
                dataGridView2.Rows[counter].Cells[i].Value = item;
            counter++;
        }
    }
}

1 Ответ

0 голосов
/ 25 февраля 2019

Чтобы отобразить List<string> в DataGridView в определенном количестве столбцов, вы можете создать DataTable с указанным количеством столбцов, а затем добавить свои данные в DataTable и отобразить их в DataGridView.

В следующем примере я предполагаю, что у меня есть List<string>, и я хочу показать список в 4 столбцах в DataGridView:

//My test data
var list = Enumerable.Range('A', 'Z' - 'A' + 1).Select(c => (char)c).ToList();

//Create DataTable
var columnsCount = 4;
var datatable = new DataTable();
for (int i = 0; i < columnsCount; i++)
    datatable.Columns.Add($"C{i + 1}");

//Convert List<string> to DataTable having 4 columns
list.Select((x, i) => new { Value = x, Index = i })
    .GroupBy(x => x.Index / columnsCount).ToList()
    .ForEach(x => datatable.Rows.Add(x.Select(m => m.Value).Cast<object>().ToArray()));

//Show data in DataGridView
dataGridView1.DataSource = datatable;

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...