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 DataGridView
seul 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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire
et ensuite utiliser
Je pense que c'est le moyen le plus rapide. Cela va modifier la source de données de la table, si vous ne le voulez pas, alors copie du tableau est reqired. Sachez également que
DataGridView.DataSource
n'est pas nécessairement deDataTable
type.Je ne sais rien fournies par le Framework (au-delà de ce que vous voulez éviter) qui permettrait de faire ce que vous voulez, mais (comme je pense que vous le savez), il serait assez facile de créer quelque chose de simple vous-même:
l'une des meilleure solution apprécié 😉
D'abord convertir vous datagridview les données de la Liste, puis de les convertir Liste de DataTable