Strona 1 z 1

Baza -> DataGrid -> Grupowanie WPF

Napisane: piątek, 21 sierpnia 2015, 20:40
przez albin
Witam.
Mam przykładowa baze imie, nazwisko, rodzaj aktywnsci, data
Pobieram dane z bazy danych wedle kryterium daty i wyswietlam je DataGridzie.
Jest wszystko ok.
A teraz chce wszystko pogrupowac naprzykład według rodzaju aktywności, albo daty...

Jak to sprytnie zrobić, w necie jest mnostwo przykladow grupowania kolekcji, czy w takim razie to co otrzymuje wczytac do jakiejs
listy a pozniej to pogrupować? (jak to zrobić?).
Pzdr...

Re: Baza -> DataGrid -> Grupowanie WPF

Napisane: poniedziałek, 24 sierpnia 2015, 20:26
przez aszusz
Cześć :)

Właśnie tak, jak napisałeś. Z tego co się orientuję, to kiedy bindujesz DataGrid.ItemsSource do jakiejś kolekcji, to ta kolekcja zostaje sama opakowana przez WPF w CollectionView. Kiedy jednak chcesz dodać do niej grupowanie musisz sam opakować ją ręcznie. Oto prosty przykład:

Code: Zaznacz cały

public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();

            var people = new List<Person>
            {
                new Person {FirstName = "Adrian", LastName = "Szuszkiewicz", Tier = 1},
                new Person {FirstName = "Jan", LastName = "Kowalski", Tier = 2},
                new Person {FirstName = "Arkadiusz", LastName = "Włodarczyk", Tier = 1},
                new Person {FirstName = "Grzegorz", LastName = "Nowak", Tier = 2}
            };

            var view = new ListCollectionView(people);
            if (view.GroupDescriptions != null)
            {
                view.GroupDescriptions.Add(new PropertyGroupDescription("Tier"));
            }
            DataContext = view;
        }
    }

Code: Zaznacz cały

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    
    <Grid>
        <DataGrid ItemsSource="{Binding}">
            <DataGrid.GroupStyle>
                <GroupStyle>
                    <GroupStyle.HeaderTemplate>
                        <DataTemplate>
                            <TextBlock Text="Tier"></TextBlock>
                        </DataTemplate>
                    </GroupStyle.HeaderTemplate>
                </GroupStyle>
            </DataGrid.GroupStyle>
        </DataGrid>
    </Grid>
    
</Window>

Re: Baza -> DataGrid -> Grupowanie WPF

Napisane: poniedziałek, 31 sierpnia 2015, 16:02
przez albin
Dopiero tera przeczytałem odpowiedź, za która dziękuję, zrobiłem podobnie :).