从'System.String'到'System.Guid的无效转换

时间:2014-10-21 17:20:37

标签: c# asp.net gridview

我的页面使用GridView在用户登录后向用户显示所有客户端。但是我试图让GridView只显示属于相应用户的客户端。

......背后的代码:

String strConnString = ConfigurationManager
    .ConnectionStrings["BA_2013ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "getClients";
cmd.Parameters
    .Add("@UserId", SqlDbType.UniqueIdentifier)
    .Value = txtUserId.Text.ToString();
cmd.Connection = con;

con.Open();

gvClients.DataSource = cmd.ExecuteReader();
gvClients.DataBind();

con.Close();
con.Dispose(); 

...存储过程:

ALTER PROCEDURE dbo.getClients
@UserId uniqueidentifier
AS
BEGIN
    SELECT ClientId, UserId, ClientName, EmailAddress, PhoneNumber, ServicesNum 
    FROM  Client_tb 
    WHERE UserId = @UserId  

END

当我运行页面时,我收到错误:从'System.String'到'System.Guid'的无效转换 ......请问我可以得到一些帮助吗?

1 个答案:

答案 0 :(得分:3)

您需要将字符串guid解析为Guid,如:

cmd.Parameters.Add("@UserId", SqlDbType.UniqueIdentifier).Value = Guid.Parse(txtUserId.Text);

您还可以在string构造函数中传递Guid值,如:

cmd.Parameters.Add("@UserId", SqlDbType.UniqueIdentifier).Value = new Guid(txtUserId.Text);

此外,无需在TextBox的文本字段上调用ToString,它已经是字符串类型。

(请记住.Net framework 4.0及更高版本支持Guid.Parse

如果您从TextBox获得输入,则可能会遇到Guid的无效值,在这种情况下,您可以使用Guid.TryParse方法。