Разделить представление данных после определенного количества строк - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть сетка данных, которая выглядит следующим образом:

┌───────────┬───────────┐
│ ID        │ Name      │
├───────────┼───────────┤
│ 1         │ Jack      │
│ 2         │ Carl      │
│ 3         │ Daniel    │
│ 4         │ Abby      │
│ ..        │           │
│ 10000     │           │
└───────────┴───────────┘

С идентификатором столбца и именем столбца идентификатора содержит более 10.000 идентификаторов, как я могу это сделать, если я нажму кнопкупоявится всплывающее окно, но только с первыми 999 идентификаторами, и если я пойду и нажму "ОК", то покажет свои следующие 999 идентификаторов, пока оно не будет завершено?

1 Ответ

0 голосов
/ 24 сентября 2019

Сначала разделите строки в DataGridView на части нужного вам размера.Когда пользователь нажимает кнопку, вы можете выполнить итерацию и создать выходную строку для каждой части.

private IEnumerable<IEnumerable<DataGridViewRow>> SplitDataGridView(DataGridView dgv)
{
    var rows = new List<DataGridViewRow>(size);

    foreach (DataGridViewRow row in dgv.Rows)
    {
        rows.Add(row);

        if (rows.Count == size)
        {
            yield return rows;
            rows = new List<DataGridViewRow>(size);
        }
    }

    if (rows.Count > 0)
    {
        yield return rows;
    }
}

private void button1_Click(object sender, EventArgs e)
{
    foreach (var rows in SplitDataGridView(dataGridView))
    {
        var sb = new StringBuilder();
        foreach (var row in rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                sb.Append(cell.Value);
                sb.Append(delimiter);
            }
            sb.Remove(sb.Length - delimiter.Length, delimiter.Length);
            sb.AppendLine();
        }

        MessageBox.Show(sb.ToString());
    }
}
...