2014-10-21 5 views
0

Моя страница использует GridView для отображения всех клиентов пользователю после того, как он или она войдут в систему. Однако я пытаюсь заставить GridView показывать только тех клиентов, которые принадлежат соответствующему пользователю.Недопустимый литой от «System.String» до «System.Guid»

... код позади:

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 

когда я запускаю страницу, я получаю ошибку: Invalid литая из «System.String 'to' System.Guid ... Могу ли я помочь с этим, пожалуйста?

+1

Заявление об ошибке кажется довольно ясным. Вам нужно преобразовать строку в Guid. К счастью, у него есть [конструктор для этого] (http://msdn.microsoft.com/en-us/library/96ff78dc (v = vs.110) .aspx). – mason

ответ

2

Вам нужно разобрать строку 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); 

Также нет необходимости вызывать ToString в текстовом поле TextBox это уже строка типа.

(Помните Guid.Parse поддерживается в .NET Framework 4.0 и выше)

Если вы получаете входной сигнал от TextBox то скорее всего, вы можете столкнуться недопустимые значения для Guid в этом случае вы можете использовать Guid.TryParse метод.

+1

Спасибо за помощь! –

+0

@AnthonyKnight, добро пожаловать – Habib

Смежные вопросы