none
wpf comment ajouter une ligne par code dans un datagrid

    Question

  • bonjour

     j'ai un datagrid auquel je voudrais ajouter les valeurs de 7 textbox qui doivent composer la ligne lorsque je click sur un bouton

     pouvez vous m’aider  à realiser le code qui permettrait cela$merci d'avances

    mercredi 24 mai 2017 08:29

Réponses

  • Voici le code Simon,

    XAML : 

    <Window x:Class="WpfApp2.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:WpfApp2"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <StackPanel>
    
                <TextBox Width="250" x:Name="txtTest1"/>
                <TextBox Width="250" Margin="0 10 0 0"
                         x:Name="txtTest2" />
                <Button Content="Add new row"
                        HorizontalAlignment="Left"
                        Margin="0,10,0,0"
                        VerticalAlignment="Top"
                        Width="75"
                        Click="Button_Click_1" />
                <DataGrid x:Name="dataGrid"
                          Margin="0 20 0 0"
                          ItemsSource="{Binding Path=DataView}">
                    
                    
                </DataGrid>
    
      
    
            </StackPanel>
        </Grid>
    </Window>
    

    C#

    using System;
    using System.Collections.Generic;
    using System.Data;
    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;
    
    namespace WpfApp2
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            private DataTable DataTable { get; set; }
            public DataView DataView { get; set; }
    
            public MainWindow()
            {
                InitializeComponent();
    
                DataTable = new DataTable();
                DataTable.Columns.Add("Test1");
                DataTable.Columns.Add("Test2");
                DataView = DataTable.DefaultView;
              
    
                for (int i = 0; i < 20; i++)
                {
                    DataRow dr = DataTable.NewRow();
                    dr["Test1"] = "Item " + i.ToString();
                    dr["Test2"] = "Content " + i.ToString();
                    DataTable.Rows.Add(dr);
                }
                DataContext = DataView;
            }
    
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
            
                DataRow dr = DataTable.NewRow();
                dr["Test1"] = txtTest1.Text;
                dr["Test2"] = txtTest2.Text;
                DataTable.Rows.Add(dr);
              
            }
    
            public class Test
            {
                public string Test1 { get; set; }
                public string Test2 { get; set; }
            }
    
        }
    }
    

    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 mercredi 24 mai 2017 12:07
    mercredi 24 mai 2017 10:54

Toutes les réponses

  • Bonjour Simon,

    Personnellement, j'opterais pour l'utilisation de l'INotifyPropertyChanged grâce aux ObservableCollection.

    Voici un article intéressant à ce sujet : http://sa.ndeep.me/post/programatically-add-rows-in-a-wpf-datagrid

    Le principe sera de binder toutes les valeurs (propriété Text) de vos textbox à chaque propriété de votre objet (Client par exemple).

     <TextBox Text="{Binding Nom}"/>

    et ensuite rajouter ce nouvel objet dans l'ObservableCollection de l'ItemSource de la datagrid

    Mais êtes-vous en MVVM sur votre projet?


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



    mercredi 24 mai 2017 08:54
  • bonjour merci beaucoup j'ai corrige mes codes xaml

     et j'ai essaye ce code mais cela fonctionne pas

    // on insert une nvelle ligne
    DataRow dr = dt.NewRow();
    dr["t1"] = "test01";
    dr["i1"] = 10;
    dr["t2"] = "test02";
    // on ajoute la ligne
    dt.Rows.Add(dr);
    // on affiche la table
    dataGrid1.DataSource = dt; 

    pouvez vous me corriger merci d'avance

    mercredi 24 mai 2017 09:49
  • Voici le code Simon,

    XAML : 

    <Window x:Class="WpfApp2.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:WpfApp2"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <StackPanel>
    
                <TextBox Width="250" x:Name="txtTest1"/>
                <TextBox Width="250" Margin="0 10 0 0"
                         x:Name="txtTest2" />
                <Button Content="Add new row"
                        HorizontalAlignment="Left"
                        Margin="0,10,0,0"
                        VerticalAlignment="Top"
                        Width="75"
                        Click="Button_Click_1" />
                <DataGrid x:Name="dataGrid"
                          Margin="0 20 0 0"
                          ItemsSource="{Binding Path=DataView}">
                    
                    
                </DataGrid>
    
      
    
            </StackPanel>
        </Grid>
    </Window>
    

    C#

    using System;
    using System.Collections.Generic;
    using System.Data;
    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;
    
    namespace WpfApp2
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            private DataTable DataTable { get; set; }
            public DataView DataView { get; set; }
    
            public MainWindow()
            {
                InitializeComponent();
    
                DataTable = new DataTable();
                DataTable.Columns.Add("Test1");
                DataTable.Columns.Add("Test2");
                DataView = DataTable.DefaultView;
              
    
                for (int i = 0; i < 20; i++)
                {
                    DataRow dr = DataTable.NewRow();
                    dr["Test1"] = "Item " + i.ToString();
                    dr["Test2"] = "Content " + i.ToString();
                    DataTable.Rows.Add(dr);
                }
                DataContext = DataView;
            }
    
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
            
                DataRow dr = DataTable.NewRow();
                dr["Test1"] = txtTest1.Text;
                dr["Test2"] = txtTest2.Text;
                DataTable.Rows.Add(dr);
              
            }
    
            public class Test
            {
                public string Test1 { get; set; }
                public string Test2 { get; set; }
            }
    
        }
    }
    

    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 mercredi 24 mai 2017 12:07
    mercredi 24 mai 2017 10:54
  • merci

    je vais le tester de ce pas  et je vous dis la reponses

    un rand merci

    mercredi 24 mai 2017 11:47