WPF Datagrid + EF

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo Allemaal,

Ik ben nu enige tijd bezig met het Entity Framework en WPF. Ik heb mijn data via een CollectionViewSource aan de datagrid gebonden.
Echter ben ik nu al lange tijd aan het googelen om de juiste events te vinden voor het automatisch opslaan van wijzigingen en nieuwe records.

Ik heb dit ook al via een ObservableCollection geprobeert, echter bij het aanmaken van een record treed het event al op, terwijl er nog geen data is ingevoerd.

Als ik het standaard DataGrid event pak (RowEditEnding) zijn de wijzigingen nog niet doorgevoerd naar de viewsource.

Wat is de juiste manier hier?

Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 19:49

Guldan

Thee-Nerd

Om de nieuwe gegevens in de roweditending te krijgen moet je de databind van de kolom aanpassen naar het volgende:

XML:
1
<DataGridTextColumn Header="SearchValue" Binding="{Binding Path=SearchValue,UpdateSourceTrigger=PropertyChanged }" />


Het gaat dan voornamelijk om het updateSourceTrigger. Je zou ook even kunnen proberen om dit op de bindingsource van de datagrid toe te voegen. Dat zou misschien ook voldoende moeten zijn :). (Als dat ook werkt geef even een seintje)

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,
Op de kolom werkt dit inderdaad, op het grid heb ik het niet werkend gekregen.
Op zich vind ik het wel vreemd dat het WPF Grid geen RowEditEnd heeft, maar ok.

Hoe van je nu nieuwe rows af? Met ObservableCollection vind het Event plaats voordat er data instaat.

Groeten,
Martin.

Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 19:49

Guldan

Thee-Nerd

Kan je die laatste zin even opnieuw schrijven? Ik snap niet precies wat je bedoelt

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tja, snelle replies komen altijd maar voor de helft.

Ik zoek nu nog de juiste manier om nieuwe records af te vangen met het Entity Framework.
Ik heb dit nu handmatig met een Save button, maar zou dit ook graag automatiseren, ook hier kan ik het juiste Event niet vinden. Via RowEditEnding heb ik dit niet via elkaar kunnen krijgen, en via een ObservableCollection treed het event af bij het aanmaken van de Row, maar niet wanneer de data klaar is. Het gaat specifiek om het Entity Framework, hoe gaat het hier normaal mee om? Alle tutorials die ik heb gezien zijn met een Save button :-(

Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 19:49

Guldan

Thee-Nerd

Dat kan wel dan móet je gebruik maken van een bindingsource. Kijk hier maar eens naar: http://www.akadia.com/services/dotnet_databinding.html

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het even doorgelezen, bedankt, echter weet ik niet of ik dit zo direct naar WPF kan vertalen en de manier hoe EF zou moeten werken.

Wat ik niet begrijp is dat:

C#:
1
2
3
4
5
        private void fileStatusDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
        {
            if (e.EditAction== DataGridEditAction.Commit)
                context.SaveChanges();
        }


prima werkt voor updates, het EF model heeft de laatste data.
Als ik een rij invoeg, wordt dit event ook aangeroepen, echter ligt dit nog niet in het onderliggende model.
Na dit event is het model echter wel up to date, en kan ik dus mijn Save Button gebruiken.

Zou het werken om hier te kijken of mijn ID kolom 0 is, handmatig toevoegen aan mijn context:
C#:
1
2
context.FileStatus.Add(newRow);
context.SaveChanges();


of heb ik dan een ranzige/dubbele oplossing?

Groeten.

Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 19:49

Guldan

Thee-Nerd

Je hebt ook een rowsAdded event van een gridview. Misschien dat je daar eens naar moet kijken.
edit: Groeten hoeft hier niet hoor.

[ Voor 16% gewijzigd door Guldan op 01-03-2011 15:14 ]

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit event kan ik dus niet vinden in het WPF grid.
Dat zou het probleem wel oplossen.
Pagina: 1