C#cast无效

时间:2014-04-29 13:19:04

标签: c# listview exception

在我的c#程序中,我有一个listview点击事件。这是我的代码:

private void factorLV_Click(object sender, EventArgs e)
{
  try
{
    if (listview1.SelectedItems.Count == 0)
        return;
    listview2.Items.Clear();
    listview2.Show();
    DataClasses1DataContext db = new DataClasses1DataContext();
    List<ReportFactorResult> list = db.ReportFactor(Convert.ToInt32(listview1.SelectedItems[0].SubItems[0].Text)).ToList<ReportFactorResult>();
    foreach (ReportFactorResult val in list)
    {
        ListViewItem lst = new ListViewItem((Convert.ToString(listview2.Items.Count + 1)).ToString());
        lst.SubItems.Add(val.storeName);
        lst.SubItems.Add(val.Code.ToString());
        lst.SubItems.Add(val.factorNumber.ToString());
        lst.SubItems.Add(val.salePrice.ToString());
        listview2.Items.Add(lst);
    }
}
  catch(Exception ex)
{
   messageBox.show(ex.message);
}
}

当我在visual studio中运行该程序时,它工作正常。但是当我从Visual Studio环境中运行.exe时,它遇到了这个例外:

  

指定的演员表无效

下图显示没有try catch的异常。当我使用try catch时,我得到了&#34;指定演员......&#34;消息。

http://i59.tinypic.com/2qkl3qg.png

此外,在visual studio我的程序远程连接到sql server管理,但在外部visual studio中我连接到SQLExpress中的Restored数据库。

1 个答案:

答案 0 :(得分:0)

显示堆栈跟踪后,它更清楚你的问题是什么。

目前您的问题是将您的sql字段映射到ReportFactorResult。特别是ReportFactorResult有一个int64字段,它在数据库中有不同的字段类型。

要获得进一步的帮助,我们需要查看ReportFactorResult和您的数据库方案。但是如果你查看你的ReportFactorResult类并搜索所有int64字段,你可能会自己找到有问题的字段。