Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: WPF C#4.0 DataGrid
I am creating an application in which I created a list collection and successfully binded bound it to a DataGrid. The problem I am having is to pull data back from the datagrid and use it to form the elements of the same list collection when a user clicks the SAVE button after making changes to the DataGrid.
 
Thanks in advance.
 
THS IS THE XAML This is the Xaml:
 
<grid removed="CornflowerBlue">
    <datagrid autogeneratecolumns="False" height="530" horizontalalignment="Left" margin="12,12,0,0" name="gridBeveragesAndJuices" verticalalignment="Top" width="573">
              HorizontalGridLinesBrush="Cyan" RowBackground="#FF12AD12" VerticalGridLinesBrush="Cyan" Foreground="Cyan" EnableColumnVirtualization="False" 
              EnableRowVirtualization="False" CanUserDeleteRows="True" CanUserAddRows="True" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="False" AlternatingRowremoved="DodgerBlue" FontSize="13">
        <datagrid.resources>
            <Style TargetType="{x:Type DataGridColumnHeader}">
                <setter property="Foreground" value="DodgerBlue" />
                <setter property="BorderBrush" value="Yellow" />
            </Style>
        </datagrid.resources>
        <datagrid.columns>
            <datagridtextcolumn width="287" header="                        ITEMS">
                       Binding="{Binding Path=ITEMS8, Mode=TwoWay, NotifyOnTargetUpdated=True}" x:Name="ItemsColumn" />
            <datagridtextcolumn width="286" header="                        PRICE">
                       Binding="{Binding Path=PRICE8, Mode=TwoWay, NotifyOnTargetUpdated=True}" x:Name="PriceColumn"/>
        </datagridtextcolumn></datagridtextcolumn></datagrid.columns>
    </datagrid>
    <Button Content="Cancel" Height="23" HorizontalAlignment="Left" Margin="67,578,0,0" Name="btnCancel" VerticalAlignment="Top" Width="75" />
    <Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="256,578,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" Click="btnSave_Click" />
    <Button Content="Exit" Height="23" HorizontalAlignment="Left" Margin="444,578,0,0" Name="btnExit" VerticalAlignment="Top" Width="75" />
 

</grid>
 
This is the code behind:
public partial class BeveragesAndJuices : Window
{
    public BeveragesAndJuices()
    {
        InitializeComponent();
        gridBeveragesAndJuices.ItemsSource = Source8;
    }
 
    public class Values8 
    {
        public string ITEMS8 { get; set; }
        public decimal PRICE8 { get; set; }
    }
 

    public List<values8> Source8 = new List<values8> 
    {
        new Values8(){ITEMS8 = "Lacasera ", PRICE8 = 290}, new Values8(){ITEMS8 = "Cran-Orange Chiller ", PRICE8 = 290}, new Values8(){ITEMS8 = "Festive Fruity Flavored Milk  ", PRICE8 = 290}, 
        new Values8(){ITEMS8 = "Homemade Iced Coffee ", PRICE8 = 290}, new Values8(){ITEMS8 ="Lemon Cucumber Seltzer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Fizzy Water ", PRICE8 = 290}, 
        new Values8(){ITEMS8 ="Haunted (Black Cauldron) Punch  " , PRICE8 = 290}, new Values8(){ITEMS8 ="Lemon Ginger Iced Green Tea " , PRICE8 = 290}, new Values8(){ITEMS8 ="Orange Creamsicle Shake " , PRICE8 = 290}, 
        new Values8(){ITEMS8 = "Blueberry Blast Smoothie ", PRICE8 = 290}, new Values8(){ITEMS8 ="Shamrock Milk Mixer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Pomegranate Punch  ", PRICE8 = 290}, 
        new Values8(){ITEMS8 ="anned Milo " , PRICE8 = 290}, new Values8(){ITEMS8 ="Viju Milk " , PRICE8 = 290}, new Values8(){ITEMS8 = "5 Alive ", PRICE8 = 290}, 
        new Values8(){ITEMS8 ="Cherry Vanilla Smoothie  " , PRICE8 = 290}, new Values8(){ITEMS8 = "Boysenberry-Banana Blast ", PRICE8 = 290}, new Values8(){ITEMS8 = "Vanilla Iced Mochaccino  ", PRICE8 = 290}, 
        new Values8(){ITEMS8 ="Choco-Nana Milk Mixer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Fresh Fruit Pudding Milk Mixer ", PRICE8 = 290}, new Values8(){ITEMS8 ="Luscious Licuado  " , PRICE8 = 290}, 
        new Values8(){ITEMS8 = "Frosty Pine-Orange Yogurt Smoothie ", PRICE8 = 290}, new Values8(){ITEMS8 = "Mocha-ccino Freeze ", PRICE8 = 290}, new Values8(){ITEMS8 ="Lite Iced Mocha " , PRICE8 = 290}, 
        new Values8(){ITEMS8 ="Nectarine Whirl " , PRICE8 = 290}, new Values8(){ITEMS8 ="Strawberries and Cream Smoothie  " , PRICE8 = 290}, new Values8(){ITEMS8 ="Strawberry Light Lemonade " , PRICE8 = 290}
    };
 
    private void btnSave_Click(object sender, RoutedEventArgs e)
    {
        //clear the elements of the source  
        Source8.Clear();
 
        //get the items on the datagrid and use them to form new elements of the 
        //Source8

        foreach(DataGridRow Row in gridBeveragesAndJuices)
        {
            //this where am stuck, foreach flags an error
            //that DataGridRow does not have a definition for GetEnumerator
        }
    }
}
Posted 7-Apr-12 4:01am
Edited 7-Apr-12 8:07am
v2
Comments
Shahin Khorshidnia at 7-Apr-12 13:08pm
   
And the problem?!

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

You really should be using binding for the dataGrid. If you have the following class as the DataContext
 
public class DataContext : INotifyPropertyChanged
{
  Public List<values8> Source8 {
    get { return _source8;}
    set {
      if (value != _source8)
      {
        _source8 = value;
        if (PropertyChange != null)
          PropertyChanged (this, new PropertyChangedEventArgs(_source8));
      }
    }
  }
  private List<values8> _source8; 
  // Whatever else
}</values8></values8>
 
The XAML would be:
 
<datagrid itemssource="{Binding Source8}">
  ......
</datagrid>
 
Now to get the values in the Grid, you just need to interate through the Source8 list.
 
You need to learn about the MVVM pattern, which is really what WPF is intended to work with.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 495
1 Maciej Los 340
2 Richard MacCutchan 265
3 BillWoodruff 225
4 Mathew Soji 200
0 OriginalGriff 8,804
1 Sergey Alexandrovich Kryukov 7,457
2 DamithSL 5,689
3 Maciej Los 5,279
4 Manas Bhardwaj 4,986


Advertise | Privacy | Mobile
Web04 | 2.8.1411028.1 | Last Updated 7 Apr 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100