2016-12-14 100 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

我想现在看起来很有用,非常感谢。 –

相关问题