首页 > 解决方案 > 在一定数量的行之后拆分datagridview

问题描述

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

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

使用列 ID 和名称,ID 列中有超过 10.000 个 ID,我该怎么做,如果我点击一个按钮,会弹出一个消息框,但只有前 999 个 ID,如果我点击确定,它将显示我下一个 999 ID 直到它完成?

标签: c#datagridviewdatatablesplit

解决方案


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

推荐阅读