2016-12-14 101 views
-1

代碼的對象:異常類型的則「」,無法轉換類型「MS.Internal.NamedObject」在前端爲類型「System.Data.DataRowView」

<ListView Name="lvCus" MouseDoubleClick="ListViewItem_DoubleClick"> 
    <ListView.View> 
     <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="TbCus"> 
      <GridViewColumn Header="CusID" Width="40" DisplayMemberBinding="{Binding Path=CusID}" /> 
      <GridViewColumn Header="Firstname" Width="120" DisplayMemberBinding="{Binding Path=fn}" /> 
      <GridViewColumn Header="Lastname" Width="120" DisplayMemberBinding="{Binding Path=ln}" /> 
      <GridViewColumn Header="Dob" Width="100" DisplayMemberBinding="{Binding Path=dob}" /> 
      <GridViewColumn Header="Age" Width="60" DisplayMemberBinding="{Binding Path=age}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

下面是代碼在後端:

private void ListViewItem_DoubleClick(object sender, RoutedEventArgs e) 
{ 
    System.Data.DataRowView cusObj = (System.Data.DataRowView)lvCus.SelectedItem; 
    var myobj = cusObj.Row.ItemArray; 
    txtCusID.Text = myobj[0].ToString();  
    txtfn.Text = myobj[1].ToString(); 
    txtln.Text = myobj[2].ToString(); 
    txtdob.Text = myobj[3].ToString(); 
    txtage.Text = myobj[4].ToString(); 
} 

ListView加載數據,它似乎有一個空行在最後。當我點擊ListView的空行時,出現以下錯誤:

A first chance exception of type 'System.InvalidCastException' occurred in WpfApp.exe

Additional information: Unable to cast object of type 'MS.Internal.NamedObject' to type 'System.Data.DataRowView'.

If there is a handler for this exception, the program may be safely continued.

我得到了上面的錯誤,我該如何解決這個問題?夥計們,我正處於學習階段。

+0

你能不要添加空值檢查到您選擇的項目?這可能是因爲試圖對空項目進行強制轉換。 –

+0

你的問題到底是什麼? – Tim

+0

@Tim:當然,我想要一些解決方案來擺脫錯誤,這就是爲什麼發佈錯誤。 –

回答

1

您應該使用的運營商,以確保SelectedItem屬性實際上爲了避免得到一個異常返回System.Data.DataRowView當上排在用戶雙擊:

private void ListViewItem_DoubleClick(object sender, RoutedEventArgs e) 
    { 
     System.Data.DataRowView cusObj = lvCus.SelectedItem as System.Data.DataRowView; 
     if (cusObj != null) 
     { 
      var myobj = cusObj.Row.ItemArray; 
      txtCusID.Text = myobj[0].ToString(); 
      txtfn.Text = myobj[1].ToString(); 
      txtln.Text = myobj[2].ToString(); 
      txtdob.Text = myobj[3].ToString(); 
      txtage.Text = myobj[4].ToString(); 
     } 
    } 
+0

感謝您的回答。我現在得到了新的例外。 WpfApp.exe中發生未處理的異常類型'System.NullReferenceException' 附加信息:未將對象引用設置爲對象的實例。 –

+0

在哪個代碼行上? – mm8

+0

我想現在看起來很有用,非常感謝。 –

相關問題