在一定数量的行后拆分datagridview

时间:2019-09-24 06:53:22

标签: c# datagridview datatable split

我有一个看起来像这样的datagridview:

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

具有列ID和名称的ID列中有超过10.000个ID,该怎么办?如果我单击按钮,则会弹出一个消息框,但只有前999个ID出现,然后单击确定即可。它会告诉我下一个999个ID,直到完成?

1 个答案:

答案 0 :(得分:1)

首先将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());
    }
}