2017-04-16 9 views
0

Ich habe eine Datagridview mit einer Information der Kunden. Ich habe Hintergrunddaten, die ich auf Datagridview nicht darstelle. Ich versuche, eine Kundennummer in einer ausgewählten Zeile in Datagrid zu erhalten. Ich versuche diesen Code zu verwenden, aber ich habe einen Fehler bei der Konvertierung von datagrid.SelectedItem in DataViewRow bekommen.C# wpf datagridview ausgewählte Zeile

Hier ist mein C# -Code;

private void searchPayment_btn_Click(object sender, RoutedEventArgs e) 
    { 
     DataRowView drv = (DataRowView)customerDataGrid.SelectedItem; 
     String result = (drv["customer_id"]).ToString(); 
     presenter.getSelecetedCustomerPayment(Convert.ToInt32(result)); 
    } 

Im Debug-Modus kann ich sehen customerDataGrid.SelectedItem ist korrekt. Es gibt alle meine Daten einschließlich "customer_id" zurück.

und das ist der XAML-Code für mein Datagrid;

<DataGrid x:Name="customerDataGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="10,10,326,10" AutoGenerateColumns="False" IsReadOnly="True"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Binding="{Binding tc_id_no}" Header="National ID"/> 
         <DataGridTextColumn Binding="{Binding firstname}" Header="Name"/> 
         <DataGridTextColumn Binding="{Binding lastname}" Header="Lastname"/> 
         <DataGridTextColumn Binding="{Binding group_name}" Header="Group"/> 
         <DataGridTextColumn Binding="{Binding birthdate}" Header="Birthdate"/> 
         <DataGridTextColumn Binding="{Binding parent_name}" Header="Parent Name"/> 
         <DataGridTextColumn Binding="{Binding phone_number}" Header="Phone"/> 
         <DataGridTextColumn Binding="{Binding email}" Header="Email"/> 
         <DataGridTextColumn Binding="{Binding gender}" Header="Gender"/> 
        </DataGrid.Columns> 
       </DataGrid> 

Antwort

1

Die SelectedItemProperty kehrt die (erste) aktuell ausgewählte Element Ihrer DataGrid. Dies bedeutet, dass dies ein Objekt Ihrer Customer Klasse ist (das ist der Name der Klasse, die ich vermute) und keine DataRowView oder etwas ähnliches. Sie können einfach alle Eigenschaften Ihrer Customer erhalten, wenn Sie das ausgewählte Element umwandeln. Beachten Sie, dass Sie haben zu prüfen, ob das ausgewählte Element null ist, da kein ausgewähltes Element ist möglich:

Customer selectedCustomer = customerDataGrid.SelectedItem as Customer; 
if (selectedCustomer != null) 
{ 
    //Get the properties you need 
    string selectedCustomerId = selectedCustomer.Id; 
} 
0

versuchen, diese: DataRowView row = (DataRowView) DataGrid.SelectedItems [0];

0 ist das erste Element in der ersten Kreuzung, versuchen Sie, den Index durch Versuch und Irrtum-Methode zu bekommen, weiter mit dem Index zu spielen, bis Sie den Index, den Sie wollen.

Verwandte Themen