将ListView选中的项目标签转换为guid

时间:2012-12-21 20:42:08

标签: c# sql sql-server

我有一个ListView包含来自SQL数据库的数据,我使用ListView项中的标记值来存储数据库中的uniqueid(所以我不知道)必须在ListView中创建一个额外的隐藏列来存储它。

我收到以下错误:

  

发生了System.InvalidCastException

这是我的代码:

using (SqlCommand sqlCommand = new SqlCommand("SELECT * FROM Employees WHERE ID = @ID",     DBFactory.GetSqlConnection()))
{
    sqlCommand.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = ((Guid)listView1.SelectedItems[0].Tag);

    using (SqlDataAdapter sda = new SqlDataAdapter(sqlCommand))
    {
        sda.Fill(table);
    }
}

任何想法/建议?

编辑: 我发现listView1.SelectedItems.SelectedItemArray [0] .Tag对象{string}的类型是。 非常奇怪,因为列“ID”的数据类型= UniqueIndentifier ..

2 个答案:

答案 0 :(得分:2)

您可能必须将其解析为GUID而不是将其解析。

sqlCommand.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value =
    (new Guid(listView1.SelectedItems[0].Tag));

答案 1 :(得分:0)

无论您存储的是什么,listView1.SelectedItems[0].Tag始终是一个字符串。

通过将SqlDbType.UniqueIdentifier更改为SqlDbType.VarChar

来解决问题