首页 > 解决方案 > 提高处理速度 c# datagridview foreach 检查行

问题描述

我有一个数据表加载到我的 datagridview 中。一种功能是将邮件发送给所有选定的收件人。在这样做之前,我必须先从我的原始数据表中获取选定的数据。

但是,如果我有一个巨大的数据表并想查找已检查的单元格,则整个过程需要很长时间(1-3 分钟)。

private DataTable GetDataTable()
    {
        DataTable sdt = new DataTable(); //"Selected Datatable"
        int i = 0;

        for (int z = 0; z < dataGridView1.Columns.Count; z++) // Add Columns to Datatable sdt
            sdt.Columns.Add(dataGridView1.Columns[z].HeaderText);

        foreach (DataGridViewRow Row in dataGridView1.Rows)
        {
            if (Convert.ToBoolean(Row.Cells["CheckboxHeader"].Value)) // Go on if Checkbox is checked
            {
                sdt.Rows.Add();
                for (int j = 1; j < dataGridView1.ColumnCount; ++j)
                {
                    sdt.Rows[i][j] = Row.Cells[j].Value;
                }
                i++;
            }
        }
        return sdt;
    }

如何一次访问所有选中的行?

标签: c#datagridviewdatatable

解决方案


推荐阅读