Hello
I have 1 datagrid with a list of students (=dgStudenten).
When selecting a student in the list, I would like to open another datagrid with the list of his enrollments. (=dgInschrStud)
The data for both datagrids comes from a stored procedure.
I've managed to populate the datagrid with students, but don't seem to be able to populate the datagrid with the enrollments.
Need some advice!
Thanks in advance!
Sarah
<Window x:Class="Studenten"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Overzicht studenten []" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" WindowStartupLocation="Manual" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="354" d:DesignWidth="698" SizeToContent="Manual" Icon="/TestWPF;component/Images/BaMaFlex.ico" MaxWidth="1265" MaxHeight="800" Name="frmStudenten" MinWidth="265" MinHeight="400" Left="10" Top="50" Width="300"> <Grid Name="grStudenten"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" MinWidth="250" Name="cdStudentLijst" /> </Grid.ColumnDefinitions> <DockPanel Grid.Column="0"> <DockPanel DockPanel.Dock=" top" Margin="3,3,3,3" Name="dpZoekStudent"> <Image Margin="0,0,3,0" Source="/TestWPF;component/Images/quicksearch.png" Stretch="None" Name="imgZoekFilter"></Image> <TextBox Name="tbZoekStudent" /> </DockPanel> <StackPanel DockPanel.Dock="Bottom" Margin="3,0" Name="spStudLijstFilter"> <WrapPanel Margin="0,0,0,5" Name="wpAcajaarInschr"> <Label Content="Academiejaar inschrijvingen:" Name="lblAcajaarInschr" /> <ComboBox Name="cmbAcajaarInschr" IsEditable="False"> </ComboBox> </WrapPanel> <TextBlock Margin="0,0,0,5" Text="Selectie: Bachelor in de Elektronica - ICT" FontStyle="Italic" Name="tbSelectieFilterStudenten"></TextBlock> <DockPanel Margin="0,0,0,5" Name="dpFilterStudenten"> <Button DockPanel.Dock="Left" Name="btnStudFilter"> <Image Stretch="None" Source="/TestWPF;component/Images/filter.png" Name="imgStudfilter"></Image> </Button> <WrapPanel HorizontalAlignment="Right" Name="wpStudFilterAcajaar"> <Label Content="Academiejaar:" Name="lblStudFilterAcajaar" /> <ComboBox Name="cmbStudFilterAcajaar" IsEditable="False"> </ComboBox> </WrapPanel> </DockPanel> <ComboBox Margin="0,0,0,5" Name="cmbFilterInUitSchrijf" /> <DockPanel Margin="0,0,0,5" Name="dpFilterDHO"> <CheckBox HorizontalAlignment="Stretch" VerticalAlignment="Center" Name="chbFilterDHO" ToolTip="Filter op DHO-status" /> <Button Content="=" Margin="5,0" Name="btnFilterDHO" Tag="1" /> <ComboBox Name="cmbFilterDHO"> </ComboBox> </DockPanel> </StackPanel> <DataGrid DockPanel.Dock="Top" Margin="3,0,3,5" Name="dgStudenten" AutoGenerateColumns="False" MinColumnWidth="0" HeadersVisibility="Column" CanUserAddRows="False"> <DataGrid.RowDetailsTemplate> <DataTemplate> <DataGrid Name="dgInschrStud" AutoGenerateColumns="False" MinColumnWidth="0" HeadersVisibility="Column" CanUserAddRows="False"> <DataGrid.Columns> <DataGridTextColumn Header="Pointer" MinWidth="1" Width="1" Binding="{Binding Path=p_inschrijving}" IsReadOnly="True" /> <DataGridTextColumn Header="Opleiding" Width="*" Binding="{Binding Path=opleiding}" IsReadOnly="True" /> </DataGrid.Columns> </DataGrid> </DataTemplate> </DataGrid.RowDetailsTemplate> <DataGrid.ContextMenu> <ContextMenu ItemsSource="{Binding}"> <MenuItem Name="mniStudLijstOpenen" Header="Openen" /> <MenuItem Name="mniStudLijstAfdrukken" Header="Afdrukken" /> <MenuItem Name="mniStudLijstWordAfdrukken" Header="Word-afdrukken" /> <MenuItem Name="mniStudLijstTakenlijst" Header="(Taak toevoegen.../Takenlijst)" /> <MenuItem Name="mniStudLijstBrowsen" Header="Browsen" /> <MenuItem Name="mniStudLijstSnelBrowsen" Header="Snelbrowsen" /> <Separator Name="mniStudLijstSep1" /> <MenuItem Name="mniStudLijstEmail" Header="Per e-mail verzenden..." /> <MenuItem Name="mniStudLijstEPostbus" Header="In e-postbus deponeren..." /> <Separator Name="mniStudLijstSep2" /> <MenuItem Name="mniStudLijstBMF_Groep" Header="Koppel aan BMF-groep" /> <Separator Name="mniStudLijstSep3" /> <MenuItem Name="mniStudLijstOverdrachten" Header="(Deel)overdrachten valideren..." /> <Separator Name="mniStudLijstSep4" /> <MenuItem Name="mniStudLijstAnnuleren" Header="Annuleren" /> </ContextMenu> </DataGrid.ContextMenu> <DataGrid.Columns> <DataGridTextColumn Header="Pointer" MinWidth="1" Width="1" Binding="{Binding Path=p_persoon}" IsReadOnly="True" /> <DataGridTextColumn Header="" Width="25" Binding="{Binding Path=tasks}" IsReadOnly="True" ToolTipService.ToolTip="Aantal openstaande taken."/> <DataGridTextColumn Header="Student" Width="*" Binding="{Binding Path=student}" IsReadOnly="True" /> <DataGridTemplateColumn Header="G" Width="20" CanUserResize="False" ToolTipService.ToolTip="Heeft student een iBaMaFlex!-gebruikersaccount?"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Image x:Name="IMG" /> <DataTemplate.Triggers> <DataTrigger Binding="{Binding Path=isgebruiker}" Value="1"> <Setter Property="Source" Value="/TestWPF;component/Images/User.png" TargetName="IMG"/> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </DockPanel> </Grid></Window>
Private Sub PopulateGridStudenten(ByVal DataOphalen As Boolean) If DataOphalen Then Dim DHOGebeurtenis As Integer = 0, DHOToestand As Integer = 0 If chbFilterDHO.IsChecked Then For i = 0 To dtDHOstatus.Rows.Count If dtDHOstatus.Rows(i)("pointer") = cmbFilterDHO.SelectedValue Then DHOGebeurtenis = dtDHOstatus.Rows(i)("p_gebeurtenistype") DHOToestand = dtDHOstatus.Rows(i)("p_toestand") Exit For End If Next End If dvStudenten = New DataView(oStudent.GetStudenten(GekozenTypeStudConsult, cmbAcajaarInschr.SelectedValue, cmbFilterInUitSchrijf.SelectedValue, oStudent.GetRechtenIsAlle(cmbAcajaarInschr.SelectedValue, oSharedData.p_gebruiker), oSharedData.p_gebruiker, GekozenTypeStudConsult, , , , oSharedData.Rechten.Rows(0)("oplteamnietrespvoorinschr"), , , IIf(chbFilterDHO.IsChecked, 1, 0), btnFilterDHO.Tag, DHOGebeurtenis, DHOToestand)) Else dgStudenten.ItemsSource = Nothing End If If tbZoekStudent.Text <> "" Then dvStudenten.RowFilter = "student like '%" & LTrim(RTrim(tbZoekStudent.Text.Replace("'", "''"))) & "%'" Else dvStudenten.RowFilter = "" End If dgStudenten.ItemsSource = dvStudenten Me.Title = "Studenten - Lijst [" & dvStudenten.Count & "]" tbZoekStudent.Focus() End Sub
Private Sub dgStudenten_SelectionChanged(sender As Object, e As System.Windows.Controls.SelectionChangedEventArgs) Handles dgStudenten.SelectionChanged Dim GekozenStudent As Integer = DirectCast(dgStudenten.SelectedItems(0), System.Data.DataRowView).Row.ItemArray(0) DirectCast(dgStudenten.RowDetailsTemplate.LoadContent, System.Windows.Controls.DataGrid).ItemsSource = New DataView(oStudent.GetInschrijvingenStudent(GekozenStudent, cmbAcajaarInschr.SelectedValue)) End Sub