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

cs_chalmyl 12 Messages postés dimanche 7 octobre 2007Date d'inscription 29 juillet 2009 Dernière intervention - 26 juil. 2009 à 13:32 - Dernière réponse : cs_chalmyl 12 Messages postés dimanche 7 octobre 2007Date d'inscription 29 juillet 2009 Dernière intervention
- 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
cs_chalmyl 12 Messages postés dimanche 7 octobre 2007Date d'inscription 29 juillet 2009 Dernière intervention - 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é 97 internautes ce mois-ci

Commenter la réponse de cs_chalmyl
Minotthor 72 Messages postés vendredi 16 mai 2003Date d'inscription 12 août 2009 Dernière intervention - 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
cs_chalmyl 12 Messages postés dimanche 7 octobre 2007Date d'inscription 29 juillet 2009 Dernière intervention - 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
Minotthor 72 Messages postés vendredi 16 mai 2003Date d'inscription 12 août 2009 Dernière intervention - 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.