Comment créer un DataTable à partir d'un DataGridView?

Je peut très bien être à la recherche à ce problème en arrière, mais je suis curieux de pas moins. Est-il possible de construire un DataTable de ce qui est actuellement affiché dans la DataGridView?

Pour être clair, je sais que vous pouvez le faire DataTable data = (DataTable)(dgvMyMembers.DataSource); cependant qui comprend les colonnes masquées. Je tiens à le construire à partir des colonnes affichées.

L'espoir qui fait sens.


Alors j'ai fini par essayer une combinaison d'un couple de réponses qui lui semble le mieux. Ci-dessous est ce que je suis en train d'essayer. Fondamentalement, je suis de la création de la Table de la source de données, puis de l'avant vers l'arrière en fonction de si une colonne est visible ou non. Cependant, après qu'il supprime une colonne-je obtenir un Collection was modified; enumeration operation may not execute sur la prochaine itération de la foreach.

Je suis confus car je ne suis pas essayer de modifier la DataGridViewseul le DataTable alors quoi de neuf?

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;
    }

source d'informationauteur Refracted Paladin