Springen naar inhoud


WPF

Datagrid



  • Log in a.u.b. om te beantwoorden
Er zijn 1 reacties in dit onderwerp

#1 Ludi

Ludi

    Professional Developer

  • Leden
  • PipPipPipPip
  • 357 berichten
    Laatst bezocht 02 mrt 2020 20:37

Geplaatst op 27 februari 2014 - 00:44

In WPF zijn de datagrid super snel. Dataset koppelen aan datagrid en klaar.
Simpel maar ...

De dataset bestaat uit 25 / 30 velden en men wil links op het scherm de datagrid en rechts alle velden.
Al deze velden aan de rechtse kant moeten gevuld worden op het moment als je click in het datagrid.

Op dit moment

Visual Basic Code:
	Private Sub DG_Selectionchanged(sender As Object, e As SelectionchangedEventArgs) Handles DG.Selectionchanged
		Dim dv = TryCast(DG.SelectedItem, DataRowView)

		If dv Is Nothing Then
		Else
			BuildRow(dv.Item("RANK_ID"))
		End If

	End Sub

	Private Sub BuildRow(_Rank_Id As String)
		Dim ds As DataSet
		Dim dr As DataRow
		Dim sQry As String

		sRankId = _Rank_Id

		Try
			sQry = "xxxxx = " & cMain.numFormat(_Rank_Id)
			ds = cMain.GetDataSet(sQry)

			If ds.Tables(0).Rows.Count > 0 Then
				For i = 0 To ds.Tables(0).Rows.Count - 1
					dr = ds.Tables(0).Rows(i)

					txt.TextValue = dr.Item("xxxx")

				   <Hier gaat de vraag over>

				Next

			Else

			End If

		Catch ex As Exception
			MessageBox.Show("Something very wrong", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
		End Try

	End Sub




Is hier een betere oplossing voor of moet ik daadwerkelijk het op deze manier doen. Moet ik elk veld afzonderlijk vullen.




#2 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1189 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 27 februari 2014 - 10:57

Gewoon xaml en databinding gebruiken?
Voorbeeld (hier met een DataTemplate):

<Window
xmlns="http://schemas.micro...l/presentation"
xmlns:x="http://schemas.micro...infx/2006/xaml"
xmlns:local="clr-namespace:WPFBindingSelection" x:Class="MainWindow"
Title="MainWindow" Height="350" Width="604.2">
<window.Resources>
	 <local:contactmanDataSet x:Key="ContactmanDataSet"/>
	 <CollectionViewSource x:Key="ContactViewSource" Source="{Binding Contact, Source={StaticResource ContactmanDataSet}}"/>
	 <DataTemplate x:Key="DetailTemplate">
		 <Border Width="300" Height="100" Margin="20"
		 BorderBrush="Black" BorderThickness="2" Padding="0" Background="LightSkyBlue">
			 <Grid>
				 <Grid.RowDefinitions>
					 <RowDefinition/>
					 <RowDefinition/>
					 <RowDefinition/>
					 <RowDefinition/>
					 <RowDefinition/>
				 </Grid.RowDefinitions>
				 <Grid.ColumnDefinitions>
					 <ColumnDefinition Width="60"/>
					 <ColumnDefinition/>
				 </Grid.ColumnDefinitions>
				 <TextBlock Grid.Row="0" Grid.Column="0" Text="Id:"/>
				 <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Id}"/>
				 <TextBlock Grid.Row="1" Grid.Column="0" Text="Naam:"/>
				 <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Naam}"/>
				 <TextBlock Grid.Row="2" Grid.Column="0" Text="Straat:"/>
				 <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Straat}"/>
				 <TextBlock Grid.Row="3" Grid.Column="0" Text="Plaats:"/>
				 <TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding Locatie}"/>
				 <TextBlock Grid.Row="4" Grid.Column="0" Text="Land:"/>
				 <TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding Land}"/>
			 </Grid>
		 </Border>
	 </DataTemplate>
</window.Resources>
<StackPanel DataContext="{StaticResource ContactViewSource}" Orientation="Horizontal" >
	 <DataGrid x:Name="ContactDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" ItemsSource="{Binding}" EnableRowVirtualization="True" AutoGenerateColumns="False" Width="229" Margin="0,0,0,0.4" VerticalContentAlignment="Stretch">
		 <DataGrid.Columns>
			 <DataGridTextColumn x:Name="NaamColumn" Width="SizeToHeader"
							 Header="Naam" Binding="{Binding Naam, Mode=OneWay }" MinWidth="200"/>
		 </DataGrid.Columns>
	 </DataGrid>
	 <ContentControl Content="{Binding}"
				 ContentTemplate="{StaticResource DetailTemplate}"/>
</StackPanel>
</Window>

Visual Basic Code:
Class MainWindow

Public Sub New()
	 ' This call is required by the designer.
	 InitializeComponent()
	 VulDataSet()
	 ' Add any initialization after the InitializeComponent() call.
End Sub

Private Sub VulDataSet()
	 Dim contactmanDataSet = CType(FindResource("ContactmanDataSet"), contactmanDataSet)
	 Dim contactmanDataSetContactTableAdapter As New contactmanDataSetTableAdapters.ContactTableAdapter()
	 contactmanDataSetContactTableAdapter.Fill(contactmanDataSet.Contact)
	 Dim contactViewSource = CType(FindResource("ContactViewSource"), Windows.Data.CollectionViewSource)
	 contactViewSource.View.MoveCurrentToFirst()
End Sub
End Class


Bijlage  wpfmasterdetailbinding.png   40,43K   5 downloads





Ook met taq WPF voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[WPF] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)