Sauvegarder les enregistrement d'un data grid view (unbounded) dans une data tab [Résolu]

Messages postés
12
Date d'inscription
dimanche 7 octobre 2007
Dernière intervention
29 juillet 2009
- 26 juil. 2009 à 13:32 - Dernière réponse :
Messages postés
12
Date d'inscription
dimanche 7 octobre 2007
Dernière intervention
29 juillet 2009
- 28 juil. 2009 à 16:57
Bonjour à tous,

J'essai de sauvegarder les enregistrement d'un data grid view (unbounded) dans une data table. Voici ce que j'ai jusqu'à maintenant:

private void btnSave_Click(object sender, EventArgs e)
{
DialogResult myResult;
myResult = MessageBox.Show("The records will be saved for processing.", "Delete Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

if (myResult == DialogResult.OK)
{
DataTable dt = new DataTable();
DataRow dr = null;
for (int j = 0; j < (this.dgv.RowCount - 1); j++)
{
dr = dt.NewRow();
if (j < 1)
{
for (int k = 0; k < this.dgv.ColumnCount; k++)
{
dt.Columns.Add();
}
}
for (int i = 0; i < this.dgv.ColumnCount; i++)
{
dr = this.dgv[i, j].Value.ToString(); ;
}
if (j > 0)
dt.Rows.Add(dr);
}
util.CansimInsert(dr);
dgv.Refresh();
}
else
{
return;
}

}



Mon problème est avec la ligne suivante:
dr = this.dgv[i, j].Value.ToString();
Error message: Cannot implicitly convert type 'string' to 'System.Data.DataRow'

Quelqu'un peut m'aider?
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
12
Date d'inscription
dimanche 7 octobre 2007
Dernière intervention
29 juillet 2009
28 juil. 2009 à 16:57
3
Merci
Oups... voici mon code final:

private void btnSave_Click(object sender, EventArgs e)
{
DialogResult myResult;
myResult = MessageBox.Show("The records will be saved for processing.", "Delete Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

if (myResult == DialogResult.OK)
{
DataTable dt = new DataTable();
DataRow dr = null;
for (int j = 0; j < (this.dgv.RowCount - 1); j++)
{
dr = dt.NewRow();
if (j < 1)
{
for (int k = 0; k < this.dgv.ColumnCount; k++)
{
dt.Columns.Add();
}
}
for (int i = 0; i < this.dgv.ColumnCount; i++)
{
dr[i] = this.dgv[i, j].Value.ToString(); ;
}
if (j > 0)
dt.Rows.Add(dr);
}
util.CansimInsert(dr);
dgv.Refresh();
}
else
{
return;
}

}

Merci cs_chalmyl 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_chalmyl
Messages postés
72
Date d'inscription
vendredi 16 mai 2003
Dernière intervention
12 août 2009
27 juil. 2009 à 04:42
0
Merci
Bonjour,

Si je ne m'abuse, vous êtes en train de lui dire de convertir un String en DataRow et de remplacer le DataRow dr par le String. Comprenez que cela ne lui plaît pas. Ecrire une chaîne de caractères dans une cellule d'une ligne, ce n'est pas la même chose que de remplacer la ligne elle-même par la chaîne de caractères.

Si j'ai bien compris votre code, vous devriez plutôt essayer :
dr[i] = this.dgv[i, j].Value.ToString();

Par ailleurs, savez vous que DataGridView.DataSource et DataBinding permettent de remplir votre DataGridView à partir de la DataTable et de mettre à jour la DataTable à partir des modifications effectuée sur le DataGridView, et tout ça automatiquement ? Ca vous faciliterait la vie.

Mathieu.
Commenter la réponse de Minotthor
Messages postés
12
Date d'inscription
dimanche 7 octobre 2007
Dernière intervention
29 juillet 2009
28 juil. 2009 à 01:16
0
Merci
Ben oui... ça fonctionne!! Merci beaucoup!!

La data table créée est une table temporaire. Je ne m'y connais pas beaucoup alors j'ai pris le chemin de plus simple pour moi pour le moment. Je dois livrer à la fin de la semaine...

Merci encore!
Commenter la réponse de cs_chalmyl
Messages postés
72
Date d'inscription
vendredi 16 mai 2003
Dernière intervention
12 août 2009
28 juil. 2009 à 02:39
0
Merci
Pensez à valider la réponse pour que d'autres contributeurs n'arrivent pas sur la page pleins d'enthousiasme pour résoudre un problème déjà résolu.

Mathieu.
Commenter la réponse de Minotthor

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.