我有一个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 ..
答案 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