2016-04-28 209 views
0

我真的厭倦了這個錯誤。什麼對象,什麼引用,什麼......感嘆......無論如何,我在這裏做的是用數據庫中的數據填充數據網格。我正在尋找我的記錄...無論我是否真的選擇了一個項目,當我再次按下搜索按鈕時(可能會優化搜索參數),我會收到關於「未將對象引用設置爲實例的對象「。它保留了「PNUM」行crapping出在下面的代碼:WPF C#datagrid對象引用未設置爲對象的實例

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; 

    } 

所以,我怎麼會填一個數據網格,不喜歡什麼,我充滿了,通過新的參數,可以和重新填充呢?一切似乎工作,除了重新填充。它幾乎看起來像我需要重新初始化數據網格或清除或刷新...但這些都沒有工作......請幫助!!!

+0

我的不好。什麼是datagrid的ItemsSource?應該先問這個問題。我可能需要在重新閱讀您的文章後編輯我的答案 – Nkosi

+0

請深入調試問題,以至於您可能比詢問「NullReferenceException」本身更遠。你甚至不需要提到這個例外;你的調試應該把你帶到根本原因,你應該問一個關於_that_的問題。請確保您提供可靠地再現問題的良好[mcve],這樣我們就可以避免人們發佈猜測作爲答案。有時猜測是正確的,但往往不是。 –

回答

2

這是因爲SelectedItem在您重新填充網格時將變爲null

您將首先提取所選項目,並將其轉換爲正確的類型,如SelectedItem屬性返回object,然後根據需要使用投射對象。這是提供它不是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

絕對完美的迴應。謝謝。這正是我所需要的。 – RazorSharp

相關問題