Problème de suppression de lignes dans un datagrid [Résolu]

zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 20 avril 2006 à 20:20 - Dernière réponse :  BellaPeter
- 12 juil. 2007 à 21:17
salut à tous
en fait je voudrais pouvoir supprimer des lignes dans un datagrid qui affiche que les déplacements du jour à partir d'un fichier XML le problème c'est que cza ne marche pas et lorsque je veux supprimer un enregistrement il est doublé.
voila le code du bouton:
CurrencyManager cm = (CurrencyManager)this.BindingContext[this.dataGrid1.DataSource];//this.dataGrid1.DataSource
int rowCount = cm.Count;
int pos = cm.Position;
if (cm.Position < cm.Count - 1)
{
cm.Position++;
}
ds.ReadXml("\\test.xml");
DataRow dr = ds1.Tables[0].Rows[pos];
int intLigne;
ds.Tables[0].DefaultView.Sort = "com";
intLigne = ds.Tables[0].DefaultView.Find(dr["com"]);
ds.Tables[0].Rows[intLigne].Delete();
ds.AcceptChanges();
ds1.Tables[0].Rows[pos].Delete();
ds1.AcceptChanges();
ds.WriteXml("\\test.xml");
//Form1_Load(sender, e);
j'espére trouver une réponse de votre part
Afficher la suite 

Votre réponse

51 réponses

Meilleure réponse
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 24 avril 2006 à 09:50
3
Merci
dataset.tables[0].defaultview.rowfilter="Date='" + Datetime.now.date.toshortdate() + "'";

plutot un truc du style...

par contre pas sur de la syntaxe il faudra que tu fasse des essais :)

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."

Merci Arthenius 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Arthenius
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 21 avril 2006 à 09:06
0
Merci
pourquoi n'utilise tu pas le CM.delete (ou kkchose comme ca..) enfin la foinction du currencymanager qui permet de supprimer une ligne

pas de pb de ppositionnement ou autre le CM est tjs sur ta ligne active... ??

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 21 avril 2006 à 09:34
0
Merci
j'ai fait cm.removeat(position) mais ca marche pas comme même
le problème c que j'ai dans le datagrid un dataset1 qui filtre le dataset0
si je supprime du dataset1 une ligne ca risque de ne pas avoir le m^me index que dans le dataset0 et ainsi je supprime une autre ligne du dataset0.
tu comprends mon problème ca paraît facile mais c'est vraiment difficile.
Commenter la réponse de zikofs
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 21 avril 2006 à 09:56
0
Merci
ok j'avais pas compris le pb...

alors dans tes dataset a tu une cle primaire unique ???

a savoir un champ unique pour chaque logne ??

si non => il suffit de creer dans tes dataset une colonne cle dans laquelle tu stock un compteur qui sera identique par ligne entre ton dataset 1 et 0

et pour trouver la ligne a suprrimer dans ton 2eme dataset tu parcours cette colonne a la recherche du compteur a supprimer...

archaique masi ca marche ^^

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 21 avril 2006 à 09:58
0
Merci
et si tu ne veux afficher que certaine ligne pkoi ne pas utiliser le dataset.defaultview.RowFilter = "MaColonne = '" + datetime.today + "'" ;

un truc du genre ??

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 21 avril 2006 à 16:24
0
Merci
est ce que lorsqu'on fait un dataset row filter après lorsqu'on veut mettre ca dans le datagrid on fait datagrid.datasource=dataset et on n'a dans le datagrid les lignes qui sont filtrées.
Commenter la réponse de zikofs
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 24 avril 2006 à 08:43
0
Merci
yep :)

enfin elle sont visibles par contre les autres sont encore la...mais cachee :)

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 09:38
0
Merci
mais par contre on peut pas faire de condition sur la colonne
je fais comme ca et ca marche pas
dataset.tables[0].defaultview.rowfilter="Date=Datetime.now.date";
en fait la colonne date est un string et avant je faisais un parse sur la colonne avant de lui affecter la date.
maintenant je peux pas faire un parse sur la colonne.
Commenter la réponse de zikofs
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 11:33
0
Merci
Merci beaucoup
ca fait deux semaines que j'essaye de le faire on fait je les fait mais c'était pas très génial regardes le code bizzare que j'avais fait:
ds1.Tables.Add(ds.Tables[0].Clone());
foreach (DataRow dr in ds.Tables[0].Rows)
{
if ((DateTime.Parse((string)dr["Date"])) == DateTime.Now.Date)
{
DataRow r = ds1.Tables[0].NewRow();
for (int i = 0; i < dr.ItemArray.GetLength(0); i++)
r[i] = dr[i];
ds1.Tables[0].Rows.Add(r);
}
}
DataGridTableStyle tableStyle = new DataGridTableStyle();
DataTable dt = (DataTable)ds1.Tables[0];
tableStyle.MappingName = dt.TableName;
for (int j = 0; j < 4; ++j)
{
DataGridTextBoxColumn cs = new DataGridTextBoxColumn();
cs.MappingName = dt.Columns[j].ColumnName;
cs.HeaderText = dt.Columns[j].ColumnName;
tableStyle.GridColumnStyles.Add(cs);
}
dataGrid1.TableStyles.Clear();
dataGrid1.TableStyles.Add(tableStyle);

dataGrid1.DataSource = ds1.Tables[0];
ce qui me compliqué la tâche après pour supprimer les lignes convenablement
maintenant avec le defaultview je crois que c bon il me faut juste faire ce code je crois:
CurrencyManager cm = (CurrencyManager)this.BindingContext[this.dataGrid1.DataSource;
int rowCount = cm.Count;
int pos = cm.Position;
if (cm.Position < cm.Count - 1)
{
cm.Position++;
}
ds.Tables[0].Rows[pos].Delete();
ds.AcceptChanges();
ds.WriteXml("\\test.xml");
Form1_Load(sender, e);

je te remercie encore
pour le code de suppression je te laisse voir s'il ya mieux à faire je l'ai pas encore testé.
Merci encore
Commenter la réponse de zikofs
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 11:51
0
Merci
tu sais j'ai testé le code que j'ai mis là haut mais au lieu de supprimer
la ligne il me l'ecris plusieurs fois ans le dataset.
Commenter la réponse de zikofs
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 24 avril 2006 à 12:02
0
Merci
le pb c'est que je ne comprend absolument pas pkoi tu utilise 2 dataset et pourquoi tu veux supprimer tel ou tel ligne

si ton but etait d'afficher uniquement les infos pour une journee le datarowfilter doit suffir

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 14:10
0
Merci
oui mais je dois faire après deux boutons un supprimer et un modifier
qui permettent de supprimer et modfier des lignes affichées du jour.
Commenter la réponse de zikofs
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 24 avril 2006 à 14:33
0
Merci
regarde ce code

je l'ai mis a jour a midi peut etre cela pourra til t'aider pour la suppression

http://www.csharpfr.com/codes/EXEMPLE-UTILISATION-DATAGRID-DATAADAPTER-SELECT-SUR-BDD-AVEC_27738.aspx

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 15:39
0
Merci
Merci beaucoup pour votre code dont je me suis inspiré
CurrencyManager CM = (CurrencyManager)BindingContext[ds.Table["Deplacements"]];
DataRowView CurrentView = (DataRowView)CM.Current;
CurrentView.Row.Delete();
dataGrid1.Refresh();
try
{
dataGrid1.Select(CM.Position);
}
Mais il me supprime dans le datagrid mais pas dans le fichier XML comment pourrai je valider mes suppression dans le fichier XML sans qu'il ta des redoublements des lignes.
Commenter la réponse de zikofs
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 24 avril 2006 à 15:47
0
Merci
il suffit de reecrir le fichier XML en question je pense..

dataset.writexml(nomdufichier);

voir en changeant le nomdufichier, des fois que le writexml fasse un append et double donc les lignes..

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 15:59
0
Merci
en fait pour créer le fichier XML j'ai dû passer par deux étapes après remplissage d'un formulaire:
La 1ére fois je crée le fichier comme ça:
XmlTextWriter xtw;
try
{
xtw = new XmlTextWriter("\\test.xml", System.Text.Encoding.UTF8);
xtw.Formatting = Formatting.Indented;
xtw.Indentation = 4;
xtw.WriteStartDocument(true);
xtw.WriteStartElement("Deplacements");
xtw.WriteElementString("date", dateTimePicker1.Text);
xtw.WriteElementString("villed", textBox1.Text);
xtw.WriteElementString("villea", textBox2.Text);
xtw.WriteElementString("km", textBox3.Text);
xtw.WriteElementString("typed", comboBox1.Text);
xtw.WriteElementString("com", textBox5.Text);
xtw.WriteEndElement();
xtw.Flush();
xtw.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

et la 2éme étape quand je veux remplir le fichier xml je fais comme ca:

try
{
DataSet ds = new DataSet();
ds.ReadXml("\\test.xml");
// c'est plus simple comme ça .. enfin tu fais comme tu veux
DataRow row = ds.Tables[0].NewRow();
//Ajout des valeurs dans la table.
row["Date"] = dateTimePicker1.Text;
row["Villed"] = textBox1.Text;
row["villea"] = textBox2.Text;
row["km"] = textBox3.Text;
row["typed"] = comboBox1.Text;
row["com"] = textBox5.Text;
ds.Tables[0].Rows.Add(row);
ds.WriteXml("\\test.xml");
Form1 fm1 = new Form1();
fm1.Form1_Load(sender, e);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
{
}
}
je sais pas si c'est une bonne pratique mais je sais pas peut être parce que je viens de commencer en C# je pars sur de mauvaises pistes tjrs
j'attendrai avec impatience vos conseils pour la bonne méthode de création du fichier XML.
Commenter la réponse de zikofs
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 24 avril 2006 à 16:58
0
Merci
je ne vois pas l'ointeret de ta premiere partie a partir du moment ou ton ds.Tables[0] est bien parametrer...

en l'occurence si les colonne dans cette tables sont bien defini le writexml du dataset doit recopier la strucuture...avec les données...

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 17:08
0
Merci
en fait la 1ére partie permet de créer le fichier XML dans l'émulateur du PDA
parce que je fais cette application pour un PDA et Ca me permet de déterminer
l'element deplacement et ainsi je pourrai mettre les données correspondants à chaque déplacement.
d'ailleurs je sais pas comment paramétrer le ds.tables[0].
Commenter la réponse de zikofs
Arthenius 1183 Messages postés mercredi 21 janvier 2004Date d'inscription 6 septembre 2011 Dernière intervention - 24 avril 2006 à 17:25
0
Merci
ds.tables[0].columns.add(.......)

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
zikofs 63 Messages postés mercredi 12 avril 2006Date d'inscription 6 juillet 2006 Dernière intervention - 24 avril 2006 à 17:39
0
Merci
oui je comprends mais le problème c'est que je peux pas créer
un fichier xml manuellement à l'intérieur du simulateur(d'ailleurs je sais pas ou il est dans mon PC lorsque je le crée) c'est pour ca que
je faisais l'étape 1 avant de passer à l'étape 2 pour remplir après le fichier.
Commenter la réponse de zikofs

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.