Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Gelöst: System.InvalidCastException   HResult=0x80004002

 

 

Fehlermeldung

System.InvalidCastException  HResult=0x80004002

  Message=Das Objekt des Typs "<>f__AnonymousType6`6

[System.Int32,System.String,System.String,System.String,System.String,System.String]"

 

kann nicht in Typ "Schichtplaner.tblBase_Mitarbeiter" umgewandelt werden.

 

Was bedeutet die Fehlermeldung:

Die Fehlermeldung sagt aus, dass ein Array[..] aus Integer und Strings nicht in eine Tabelle-Struktur umgewandelt werden kann.

 

Vorkommen:

Der Fehler tritt auf, wenn man eine Zeile in einem WPF DataGrid auswählt. Das Datengrid ist über Binding an einen Tabelle gebunden gewesen.

 

 

Alter Code, C#, XAML zugriff auf WPF DataGrid

private void CtlDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

    if (ctlDataGrid.SelectedItem != null)

    { 

        var item = (tblBase_Mitarbeiter) ctlDataGrid.SelectedItem;

        load_Dataset_byID(item.IDMitarbeiter);

    }

}

 

 

Lösung:

Wenn man in einem DatenGrid eine Zeile aus mehreren Tabellen über Join-Abfragen bindet, dann kann die Auswahl einer einzelnen Zeile auch nicht in das Format eine Tabelle konvertiert werden.

Als Lösung kann man den SelectedValue eines Grids auswerten. Hierzu muss allerdings eine Spalte über den SelectedValuePath eingestellt werden.

 

Neuer Code mit Abfrage des SelectedValues eines DataGrid

.cs

private void CtlDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

    int ID = (int) ctlDataGrid.SelectedValue;

    load_Dataset_byID(ID);

}

 

.xaml

In der xaml Datei muss der SelectedValue auf eine Spalte des Datengrids eingestellt werden

<DataGrid x:Name="ctlDataGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"

          AutoGenerateColumns="False"

          GridLinesVisibility="All"

          Background="#F0f0f0"

          ItemsSource="{Binding}" 

          SelectionMode="Single" 

          IsReadOnly="True" 

          MouseDoubleClick="ctlDataGrid_MouseDoubleClick"

           SelectionChanged="CtlDataGrid_SelectionChanged"

           HeadersVisibility="All"                  

           Grid.Row="1"    

           SelectedValuePath="IDMitarbeiter"

          >

 

            <DataGrid.Columns >

                <DataGridTextColumn Header="ID" Binding="{Binding IDMitarbeiter}"/>

                <DataGridTextColumn Header="Nachname" Binding="{Binding Nachname}"/>

                <DataGridTextColumn Header="Vorname" Binding="{Binding Vorname}"/>

                <DataGridTextColumn Header="Schicht" Binding="{Binding Schicht}" />

                <DataGridTextColumn Header="Maschine" Binding="{Binding Maschine}"/>

                <DataGridTextColumn Header="MA Gruppe" Binding="{Binding Mitarbeitergruppe}" Width="*"/>

                

            </DataGrid.Columns>

        </DataGrid>

 

 

Ergebnis:

Wenn jetzt eine Zeile selectiert wird, wird als Ergebnis nicht die Zeile sonder der Wert der definierten Spalte angezeigt.

SelectedValuePath=IDMitarbeiter

SelectedValue=2

 

 

 

Komplette Details Fehlermeldung

System.InvalidCastException

  HResult=0x80004002

  Message=Das Objekt des Typs "<>f__AnonymousType6`6[System.Int32,System.String,System.String,System.String,System.String,System.String]" kann nicht in Typ "Schichtplaner.tblBase_Mitarbeiter" umgewandelt werden.

 

  Source=Schichtplaner

  StackTrace:

   at Schichtplaner.Page_Base_Mitarbeiter.CtlDataGrid_SelectionChanged(Object sender, SelectionChangedEventArgs e)

 

 

 

 

Mobile
»
WPF Uhrzeit Elemente oder DateTime-Picker
»
WPF: Scollbar anzeigen
»
WPF: Column oder Row ermitteln
»
WPF: SelectedItem aus DataGrid auslesen mit Anonyous Type auf Dyamic Type
»
WPF: Elemente zu breit, rand abgeschnitten
»
Gelöst: System.InvalidCastException HResult=0x80004002 SelectedItem SelectedValue
»
WPF Kurze Zeit in Grid Spalten anpassen. Anzeige Zeit Format
»
WPF: Combobox Selected Value ermitteln und zuweisen
»
WPF: Combobox füllen
»
WPF: Hintergrundfarbe einer Spalte an Daten binden

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de