2010-11-25 9 views
1

J'ai un DetailsView, j'ai besoin d'obtenir la valeur specifield dans DataKeyNames "UserId" (un champ Guid) et l'ajouter à un guide d'objet.Comment convertir une chaîne d'objet en objet Guid dans C#

En ce moment je suis en utilisant ce code:

String myUserId = (String)uxAuthorListDetailsView.DataKey["UserId"].ToString(); 

mais je aurais besoin de quelque chose comme:

Guid myUserGuid = (Guid)uxAuthorListDetailsView.DataKey["UserId"].ToString(); 

Mais ne fonctionne pas, j'obtiens l'erreur Erreur

Cannot convert type 'string' to 'System.Guid' 

Qu'est-ce que pourrait être le problème? Merci les gars pour votre soutien!

Répondre

1

Vérifiez sous debug: quel objet est uxAuthorListDetailsView.DataKey [ "UserId "]
Je suppose que cela doit déjà être le Guid; et la conversion n'est pas nécessaire

2
var myUserGuid = new Guid(uxAuthorListDetailsView.DataKey["UserId"].ToString()); 
6

Eh bien, le problème est que vous appelez ToString() puis essayer de lancer cette chaîne à un Guid, quand il n'y a pas une telle conversion disponible. Alternatives possibles:

  • Cast au lieu d'appeler ToString(), si la valeur d'origine est vraiment un Guid:

    Guid guid = (Guid)uxAuthorListDetailsView.DataKey["UserId"]; 
    
  • Parse la chaîne à la place:

    Guid guid = new Guid(uxAuthorListDetailsView.DataKey["UserId"].ToString()); 
    

S'il s'agit de données saisies par l'utilisateur, ou s'il y a ny autre raison pour laquelle la valeur est moitié-attendue être incorrecte, et si vous utilisez .NET 4, vous pouvez utiliser Guid.TryParse à la place, ce qui vous permettra de gérer l'échec sans exception.

+0

Merci Jon ça fonctionne très bien la version Cast! Encore une fois merci! – GibboK

1

En supposant uxAuthorListDetailsView.DataKey [ "UserId"] stocke valide Guid

essayer

Guid myUserGuid = (Guid)uxAuthorListDetailsView.DataKey["UserId"] 

supprimer méthode ToString

Questions connexes