none
wpf supprimer les lignes d'un datagrid

Réponses

  • Bonjour Simon,

    Remplacez dans son INTEGRALITE votre méthode button_effacer_Click par le code ci-dessous :

            private void button_effacer_Click(object sender, RoutedEventArgs e)
            {
                DataTable = new DataTable();
                DataTable.Columns.Add("dates");
                DataTable.Columns.Add("periodes");
                DataTable.Columns.Add("magasin");
                DataTable.Columns.Add("produit");
                DataTable.Columns.Add("quantite");
                DataTable.Columns.Add("prix_unit");
                DataTable.Columns.Add("prix_total");
    
                DataView = DataTable.DefaultView;
    
                DataRow dr = DataTable.NewRow();
                DataTable.Rows.Add(dr);
                DataContext = DataView;
            }
    

    J'espère que j'ai bien répondu à votre question.

    Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post

    Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    • Marqué comme réponse SIMONGEORGES jeudi 1 juin 2017 09:38
    mercredi 31 mai 2017 11:45
  • En fait, le datatable représente une table de données.

    Le principe consiste à créer et mettre en forme le datatable pour ensuite le grieffer à la dataGrid. Chose qui a déjà été faite dans votre code (cf le constructeur MainWindow).

    Etant donné que votre dataGrid contient déjà des données qui sont dans le datatable, lorsque vous cliquez sur Effacer, j'ai juste créer un nouveau datatable et l'ai réaffecté à la datagrid.

    Voici le code commenté : 

     private void button_effacer_Click(object sender, RoutedEventArgs e)
            {
    	    //Création d'un nouveau DataTable
                DataTable = new DataTable();
                DataTable.Columns.Add("dates");
                DataTable.Columns.Add("periodes");
                DataTable.Columns.Add("magasin");
                DataTable.Columns.Add("produit");
                DataTable.Columns.Add("quantite");
                DataTable.Columns.Add("prix_unit");
                DataTable.Columns.Add("prix_total");
     
    	    //Application de la vue par défaut d'un DataTable
                DataView = DataTable.DefaultView;
    
    	    //Création d'une nouvelle ligne
                DataRow dr = DataTable.NewRow();
    
    	    //Rajout de la nouvelle ligne vierge dans le datatable
                DataTable.Rows.Add(dr);
    
    	    //Appliquer une nouvelle source de données à la dataGrid
                DataContext = DataView;
            }


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    • Marqué comme réponse SIMONGEORGES jeudi 1 juin 2017 13:15
    jeudi 1 juin 2017 11:02

Toutes les réponses

  • Bonjour Simon, 

    Voici le code à mettre dans l'évènement Click de votre bouton.

    Dans mon code le datagrid se nomme : dataGrid 

    dataGrid.Items.Clear();

    dataGrid.Items.Refresh();


    J'espère que j'ai bien répondu à votre question.

    Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post

    Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;


    mardi 30 mai 2017 14:37
  • je suis désole  il y a pas d'erreur mais j’ai teste clear et refresh et rien ne se passe je comprends plus rien

    merci  de votre aide

    mardi 30 mai 2017 14:52
  • Pouvez-vous poster :

    • le code XAML de votre datagrid
    • le code C# qui permet d'alimenter votre datagrid

    Merci d'avance


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    mardi 30 mai 2017 15:08
  • bonsoir je vous transmet le scodes xaml et cs du projet

    <Window x:Class="WpfApplication1rexxo_dtagrid_courses.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApplication1rexxo_dtagrid_courses"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="525">
        <Grid>
    
            <DockPanel Margin="0,10,0,-10">
                <DataGrid x:Name="dataGrid"
                          Margin="0,125,0,17"
                          ItemsSource="{Binding Path=DataView}"
                          ScrollViewer.CanContentScroll="True"
                          ScrollViewer.VerticalScrollBarVisibility="Auto"
                          ScrollViewer.HorizontalScrollBarVisibility="Auto" Width="461">
                </DataGrid>
            </DockPanel>
            <StackPanel>
                <Label Margin="0,0,466,0" 
                       Width="40"
                       Height="23"  
                       VerticalAlignment="Center" 
                       Content="Date"></Label>
                <TextBox x:Name="textboxperiode"
                         Margin="180,-25,291,0"
                         Height="22" KeyUp="textboxperiode_KeyUp"/>
                <TextBox x:Name="textboxdateDate" 
                         Margin="45,-35,408,-20"
                         Height="22" KeyUp="textboxdateDate_KeyUp"/>
                <Label Margin="120,-25,339,0"
                       Height="27"
                       Width="55"
                       Content="periode"/>
                <TextBox x:Name="textboxmagasin"
                         Margin="300,-25,158,0"
                         Height="22" KeyUp="textboxmagasin_KeyUp"/>
                <Button Content="Ajouter"
                        Margin="27,30,0,0" HorizontalAlignment="Left" Width="151" Click="Button_Click_1"/>
                <Label Margin="230,-140,221,0"
                       Height="27"
                       Content="magasin"
                       Width="60"/>
                <Label Margin="10,-65,453,0"
                       Height="27"
                       Content="produit"/>
                <TextBox x:Name="textboxproduit"
                         Margin="62,-68,0,0"
                         Height="22" HorizontalAlignment="Left" Width="116" KeyUp="textboxproduit_KeyUp"/>
                <Label Content="quantite"
                       Height="27"
                       Margin="185,-68,270,0"/>
                <TextBox x:Name="textboxquantite"
                         Margin="238,-70,230,0"
                         Height="22" KeyUp="textboxquantite_KeyUp"/>
                <Label Content="Prix.u"
                       Height="26"
                       Margin="300,-70,173,0"/>
                <TextBox x:Name="textboxprixunit"
                         Height="22"
                         Margin="346,-70,93,0" KeyUp="textboxprixunit_KeyUp"/>
                <Label Content=" prix.total"
                       Height="26"
                       Margin="255,-15,185,0"/>
    
                <TextBox x:Name="textboxprixtot"
                         Height="22"
                         Margin="346,-20,0,0" HorizontalAlignment="Left" Width="85"/>
                <Button Content="copier" 
                        HorizontalAlignment="Left"
                        Width="80"
                        Margin="27,-10,0,0" Click="Button_Click"/>
                <Button Content="charger"
                        HorizontalAlignment="Left"
                        Width="80" Margin="100,-20,0,0" Click="Button_Click_2"/>
    
                <Button x:Name="button_effacer"
                        Height="23"
                        Margin="27,2,337,0"
                        Content="tout effacer" Click="button_effacer_Click" />
                
            </StackPanel>
        </Grid>
    </Window>
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Data;
    using System.Collections;
    
    namespace WpfApplication1rexxo_dtagrid_courses
    {
        /// <summary>
        /// Logique d'interaction pour MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            private DataTable DataTable { get; set; }
            public DataView DataView { get; set; }
            public object i { get; private set; }
    
            public MainWindow()
            {
    
    
                InitializeComponent();
                DataTable = new DataTable();
                DataTable.Columns.Add("dates");
                DataTable.Columns.Add("periodes");
                DataTable.Columns.Add("magasin");
                DataTable.Columns.Add("produit");
                DataTable.Columns.Add("quantite");
                DataTable.Columns.Add("prix_unit");
                DataTable.Columns.Add("prix_total");
    
                DataView = DataTable.DefaultView;
    
    
                for (int i = 0; i < 2; i++)
                {
                    DataRow dr = DataTable.NewRow();
                    dr["dates"] = "20/05/2017" + i.ToString();
                    dr["periodes"] = "15jours " + i.ToString();
                    DataTable.Rows.Add(dr);
                }
                DataContext = DataView;
    
    
            }
    
    
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                DataRow dr = DataTable.NewRow();
                dr["dates"] = textboxdateDate.Text;
                dr["periodes"] = textboxperiode.Text;
                dr["magasin"] = textboxmagasin.Text;
                dr["produit"] = textboxproduit.Text;
                dr["quantite"] = textboxquantite.Text;
                dr["prix_unit"] = textboxprixunit.Text;
                dr["prix_total"] = textboxprixtot.Text;
    
                DataTable.Rows.Add(dr);
            
    
                //preparer une nouvelle entree
                textboxdateDate.Clear();
                textboxperiode.Clear();
                textboxmagasin.Clear();
                textboxproduit.Clear();
                textboxquantite.Clear();
                textboxprixunit.Clear();
                textboxprixtot.Clear();
                textboxprixtot.Background = Brushes.White;
            }
            public class Test
            {
                public string date { get; set; }
                public string periode { get; set; }
                public string magasin { get; set; }
                public string produit { get; set; }
                public string quantite { get; set; }
                public string prix_unit { get; set; }
                public string prix_total { get; set; }
    
    
    
            }
    
            private void textboxdateDate_KeyUp(object sender, KeyEventArgs e)
            {
                textboxdateDate.Background = Brushes.LightBlue;
                if (e.Key == Key.Enter)
                    textboxperiode.Focus();
            }
    
            private void textboxperiode_KeyUp(object sender, KeyEventArgs e)
            {
                textboxperiode.Background = Brushes.LightBlue;
                if (e.Key == Key.Enter)
                    textboxmagasin.Focus();
                textboxdateDate.Background = Brushes.White;
    
            }
    
            private void textboxmagasin_KeyUp(object sender, KeyEventArgs e)
            {
                textboxmagasin.Background = Brushes.LightBlue;
                if (e.Key == Key.Enter)
                    textboxproduit.Focus();
                textboxperiode.Background = Brushes.White;
    
            }
    
            private void textboxproduit_KeyUp(object sender, KeyEventArgs e)
            {
                textboxproduit.Background = Brushes.LightBlue;
                if (e.Key == Key.Enter)
                    textboxquantite.Focus();
                textboxmagasin.Background = Brushes.White;
            }
    
            private void textboxquantite_KeyUp(object sender, KeyEventArgs e)
            {
                textboxquantite.Background = Brushes.LightBlue;
                if (e.Key == Key.Enter)
                    textboxprixunit.Focus();
                textboxproduit.Background = Brushes.White;
    
            }
    
            private void textboxprixunit_KeyUp(object sender, KeyEventArgs e)
            {
                textboxprixunit.Background = Brushes.LightBlue;
                if (e.Key == Key.Enter)
                    //textboxprixunit.Focus();
                    textboxquantite.Background = Brushes.White;
                textboxprixunit.Background = Brushes.White;
                textboxprixtot.Background = Brushes.Coral;
               
                //calcul du prix total
                decimal prix_unit = decimal.Parse(textboxprixunit.Text);
                decimal quantite = decimal.Parse(textboxquantite.Text);
                decimal prix_total = prix_unit * quantite;
                textboxprixtot.Text = prix_total.ToString("#.##" + "€");
    
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                //ecrire dans le fichier
    
                dataGrid.SelectAllCells();
    
                dataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
                ApplicationCommands.Copy.Execute(null, dataGrid);
    
                dataGrid.UnselectAllCells();
    
                string result = (string)System.Windows.Clipboard.GetData(System.Windows.DataFormats.CommaSeparatedValue);
    
                //Si le fichier text n'existe pas il sera créé automatiquement
                System.IO.File.AppendAllText(@"C:\Users\Georges\Desktop\myfile1.txt", result, UnicodeEncoding.UTF8);
    
            }
    
            private void Button_Click_2(object sender, RoutedEventArgs e)
            {
                //charger les valeur du fichier
                dataGrid.ItemsSource = ReadFile(@"\Users\Georges\Desktop\myfile1.txt");
            }
    
            private IEnumerable ReadTxt(string v)
            {
                throw new NotImplementedException();
            }
            private IEnumerable<DataTable> ReadFile(string fileName)
            {
    
                string[] lines = System.IO.File.ReadAllLines(fileName);
    
                return lines.Select(line =>
                {
                    string[] data = line.Split(';');
    
                    return new Test { date = data[0], periode = data[1], magasin = data[2], produit = data[3], quantite = data[4], prix_unit = data[5], prix_total = [6] };
                });
            }
            private void button_effacer_Click(object sender, RoutedEventArgs e)
            {
    
                dataGrid.Items.Clear();
                //dataGrid.Items.Refresh();
    
            }
    
        }
    }
    
    

    en eswperant  que cela voua aidera à me corriger

    un grand merci

    mardi 30 mai 2017 21:27
  • bonjour

    je n'arrive pas a supprimer le sitems voici l'erreur que cela produit comment la corriger merci de votre aide et de votre patience

    mercredi 31 mai 2017 08:00
  • Bonjour Simon,

    Remplacez dans son INTEGRALITE votre méthode button_effacer_Click par le code ci-dessous :

            private void button_effacer_Click(object sender, RoutedEventArgs e)
            {
                DataTable = new DataTable();
                DataTable.Columns.Add("dates");
                DataTable.Columns.Add("periodes");
                DataTable.Columns.Add("magasin");
                DataTable.Columns.Add("produit");
                DataTable.Columns.Add("quantite");
                DataTable.Columns.Add("prix_unit");
                DataTable.Columns.Add("prix_total");
    
                DataView = DataTable.DefaultView;
    
                DataRow dr = DataTable.NewRow();
                DataTable.Rows.Add(dr);
                DataContext = DataView;
            }
    

    J'espère que j'ai bien répondu à votre question.

    Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post

    Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    • Marqué comme réponse SIMONGEORGES jeudi 1 juin 2017 09:38
    mercredi 31 mai 2017 11:45
  • merci beaucoup cela fonctionne bien par contre pouvez vous m'expliquer ce code car je voudrais bien le comprendre je suis autodidacte

    jeudi 1 juin 2017 09:39
  • En fait, le datatable représente une table de données.

    Le principe consiste à créer et mettre en forme le datatable pour ensuite le grieffer à la dataGrid. Chose qui a déjà été faite dans votre code (cf le constructeur MainWindow).

    Etant donné que votre dataGrid contient déjà des données qui sont dans le datatable, lorsque vous cliquez sur Effacer, j'ai juste créer un nouveau datatable et l'ai réaffecté à la datagrid.

    Voici le code commenté : 

     private void button_effacer_Click(object sender, RoutedEventArgs e)
            {
    	    //Création d'un nouveau DataTable
                DataTable = new DataTable();
                DataTable.Columns.Add("dates");
                DataTable.Columns.Add("periodes");
                DataTable.Columns.Add("magasin");
                DataTable.Columns.Add("produit");
                DataTable.Columns.Add("quantite");
                DataTable.Columns.Add("prix_unit");
                DataTable.Columns.Add("prix_total");
     
    	    //Application de la vue par défaut d'un DataTable
                DataView = DataTable.DefaultView;
    
    	    //Création d'une nouvelle ligne
                DataRow dr = DataTable.NewRow();
    
    	    //Rajout de la nouvelle ligne vierge dans le datatable
                DataTable.Rows.Add(dr);
    
    	    //Appliquer une nouvelle source de données à la dataGrid
                DataContext = DataView;
            }


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    • Marqué comme réponse SIMONGEORGES jeudi 1 juin 2017 13:15
    jeudi 1 juin 2017 11:02