Как построить DataTable из DataGridView?

Я вполне могу взглянуть на эту проблему задом наперед, но мне тем не менее любопытно. Есть ли способ построить DataTable из того, что в настоящее время отображается в DataGridView ?

Для ясности, я знаю, что вы можете это сделать DataTable data = (DataTable) (dgvMyMembers.DataSource); , однако это включает скрытые столбцы. Я хотел бы построить его только из отображаемых столбцов.

Надеюсь, что это имеет смысл.


В итоге я попробовал комбинацию из пары ответов, так как это показалось мне лучшим. Ниже то, что я пытаюсь. В основном я создаю DataTable из источника данных, а затем работаю в обратном направлении в зависимости от того, отображается ли столбец или нет. Однако после удаления столбца я получаю Коллекция была изменена;Операция перечисления может не выполняться на следующей итерации foreach .

Я сбит с толку, поскольку я не пытаюсь изменить DataGridView , а только DataTable , так в чем дело?

DataTable data = GetDataTableFromDGV(dgvMyMembers);


    private DataTable GetDataTableFromDGV(DataGridView dgv)
    {
        var dt = ((DataTable)dgv.DataSource).Copy();
        foreach (DataGridViewColumn column in dgv.Columns)
        {
            if (!column.Visible)
            {
                dt.Columns.Remove(column.Name);
            }
        }
        return dt;
    }
14
задан Refracted Paladin 10 June 2011 в 15:27
поделиться