2016-04-28 5 views
0

Ich bin wirklich müde von diesem Fehler. Welches Objekt, welche Referenz, was ... Seufz ... Wie auch immer, was ich hier mache, füllt ein Datenraster mit Daten aus der Datenbank. Ich suche nach meinem Eintrag ... Unabhängig davon, ob ich tatsächlich einen Eintrag auswähle oder nicht, wenn ich den Suchknopf erneut drücke (vielleicht um die Suchparameter zu verfeinern), bekomme ich den Fehler, dass der Objektverweis nicht auf eine Instanz gesetzt ist eines Objekts ". Es hält crapping heraus auf der „pnum“ Zeile in dem folgenden Code:WPF C# -Datagrid Objektreferenz nicht auf eine Instanz eines Objekts festgelegt

private void DgPatSrch_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 

     var id = ((DataRowView)DgPatSrch.SelectedItem).Row["Pnum"].ToString(); 
     var name = ((DataRowView)DgPatSrch.SelectedItem).Row["Pname"].ToString(); 
     var dob = ((DataRowView)DgPatSrch.SelectedItem).Row["Dob"].ToString(); 
     TbPatIdReadOnly.Text = id; 
     TbPatNameReadOnly.Text = name; 
     TbDobReadOnly.Text = dob; 

    } 

Also, wie würde ich einen Datenraster zu füllen, nicht, was ich füllte sie mit, neue params übergeben, und es wieder zu bevölkern? Alles scheint ZU ARBEITEN, außer dem Wiederbesiedeln. Es scheint fast so, als müsste ich das Datenraster neu initialisieren oder löschen oder auffrischen ... aber keiner von denen hat funktioniert ... Helfen Sie bitte !!!

+0

Mein schlechtes. Was ist die ItemsSource des Datagrids? Ich hätte das zuerst fragen sollen. Möglicherweise muss ich meine Antwort bearbeiten, nachdem ich Ihren Beitrag erneut gelesen habe. – Nkosi

+0

Bitte debuggen Sie das Problem so gründlich, dass Sie weiter gehen können, als nach der 'NullReferenceException' selbst zu fragen. Sie sollten die Ausnahme nicht einmal erwähnen müssen; Ihr Debugging sollte Sie zur Ursache führen, und Sie sollten eine Frage über _that_ stellen. Bitte stellen Sie auch sicher, dass Sie ein gutes [mcve] bereitstellen, das das Problem zuverlässig reproduziert, so dass wir vermeiden können, dass Leute Vermutungen als Antworten posten. Manchmal werden die Vermutungen richtig sein, aber zu oft nicht. –

Antwort

2

Das ist, weil die SelectedItem wird null werden, wenn Sie das Raster neu bevölkern.

Sie möchten zuerst das ausgewählte Element extrahieren, es in den richtigen Typ umwandeln, wie SelectedItem -Eigenschaft zurückgibt object und dann das Besetzung Objekt wie erforderlich verwenden. Dies ist vorausgesetzt, es ist nicht null

private void DgPatSrch_SelectionChanged(object sender, SelectionChangedEventArgs e) { 
    var selectedItem = DgPatSrch.SelectedItem as DataRowView; 
    if(selectedItem != null) { 
     var id = selectedItem.Row["Pnum"].ToString(); 
     var name = selectedItem.Row["Pname"].ToString(); 
     var dob = selectedItem.Row["Dob"].ToString(); 
     TbPatIdReadOnly.Text = id; 
     TbPatNameReadOnly.Text = name; 
     TbDobReadOnly.Text = dob; 
    } 
} 
+0

Absolut perfekte Antwort.Vielen Dank. Das war genau das, was ich brauchte. – RazorSharp

Verwandte Themen