zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006
-
20 avril 2006 à 20:20
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
A voir également:
Problème de suppression de lignes dans un datagrid
zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006 21 avril 2006 à 09:34
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.
zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006 21 avril 2006 à 16:24
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.
zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006 24 avril 2006 à 09:38
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.
zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006 24 avril 2006 à 11:33
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
zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006 24 avril 2006 à 15:39
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.
zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006 24 avril 2006 à 15:59
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.
zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006 24 avril 2006 à 17:08
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].
zikofs
Messages postés63Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention 6 juillet 2006 24 avril 2006 à 17:39
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.