2008-10-31 2 views
0

Следующий код не работает во время выполнения & hellip;Почему я не могу использовать e.CommandArgument в качестве руководства?

 
Dim Id As Guid = CType(e.CommandArgument, Guid) 

Он выбрасывает это исключение & hellip;

 
System.InvalidCastException was unhandled by user code 
Specified cast is not valid 

Почему я не могу бросить e.CommandArgument как Guid?

ответ

2

Try:

Dim DeleteId As Guid = New Guid(Convert.ToString(e.CommandArgument)) 

Это работает ...

 
Dim DeleteId As Guid = New Guid(DirectCast(e.CommandArgument, String)) 
+0

Извините. Проблема заключается в строке 137. Я не могу использовать e.CommandArgument как Guid. – 2008-10-31 20:25:32

+0

Это * IS * замена для линии 137. – 2008-10-31 20:30:13

1

сообщение «слепок не является действительным» предполагает, что тип данных для одного из значений не соответствует тому, что находится в базе данных. Можете ли вы установить точку останова на строку, где установлено значение DeleteId, и посмотреть, как выглядит Guid? Затем вы можете сравнить его с тем, что вы видите в базе данных для DogId. Я подозреваю, что вы найдете свою проблему с типом данных.

+0

Извините. Проблема заключается в строке 137. Я не могу использовать e.CommandArgument как Guid. – 2008-10-31 20:26:10

2

Я собираюсь угадать, что e.CommandArgument - это строка, которая не может быть отлита руководству. Guid может быть создан из строки:

В C#:

Guid DeleteId new Guid(e.CommandArgument); 

Я не знаю синтаксис VB.NET, но я возьму догадку:

Dim DeleteId As Guid = New Guid(e.CommandArgument); 
1

Ваша ошибка не имеет ничего общего с LINQ to SQL ... это ошибка кастинга. Используйте «новый Guid (e.CommandArgument)».

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