我的页面使用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'的无效转换 ......请问我可以得到一些帮助吗?
答案 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
方法。