i have a datagrid
and i am populating it with data from a list. now i want to get back all the data in my datagrid
to a list. how can i ?
<DataGrid Name="InstrumentGrid"
VerticalAlignment="Top" HorizontalAlignment="left"
Margin="0,16,0,0" Grid.ColumnSpan="3" Grid.Row="19" Grid.RowSpan="2"
AutoGenerateColumns="False"
Width="422" Grid.Column="1">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Id}" />
<DataGridTemplateColumn Header="NCS Date" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker BorderThickness="0" Height="20" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Instrument No" Binding="{Binding NcsNo}" />
<DataGridTextColumn Header="Type" Binding="{Binding Type}" />
<DataGridTextColumn Header="Bank Name" Width="*" Binding="{Binding BankName}" />
<DataGridTemplateColumn Header="Action">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<VirtualizingStackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Image Width="10" Margin="5 0 0 0" Height="10" Stretch="Fill" Source="/InstrumentManagement;component/wrongSign.png"></Image>
</VirtualizingStackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Loading data into DataGrid
private List<Data> list = new List<Data>();
public VehicleInOutWnd()
{
InitializeComponent();
for (int i = 0; i < 2; i++)
{
list.Add(new Data()
{
Id = i.ToString(),
BankName = "Bank al habib"+i,
NcsDate = "23/12/2018",
InstrumentNo = "234"+i,
Type = "Type abc"+i
});
}
InstrumentGrid.ItemsSource = list;
}
Now i just want to get all this data in DataGrid
, as it was in list<Data>
in some other list. on a button
click function.
When you edit a cell in the DataGrid
, you are setting the corresponding property of the Data
class in list
. So all edited data is already in list
. Just get it from there before you clear the original list:
var modifiedData = list.ToList(); //creates a copy of the list that contains the modified data
list.Clear(); //clears the original list.