J'ai une table de hachage que je veux mettre à jour à partir d'une seconde table de hachage. Pour toutes les clés qui correspondent, je veux copier la valeur. Le problème que j'ai est que lorsque j'énumère les clés de la table de hachage et que j'essaie de les convertir en chaîne, je reçois une exception concernant la conversion d'un Guid en chaîne. Or, c'est la chaîne que je veux. Lorsque vous utilisez l'opérateur d'indexation avec quelque chose comme hashtable["FirstName"], je m'attends à ce que FirstName soit la clé. Il est possible d'utiliser des Guids en dessous, je suppose, mais j'ai besoin de sortir la chaîne pour la clé, la valeur de la clé.
private void UpdateSharePointFromInfoPath(Hashtable infopathFields)
{
// Go through all the fields on the infopath form
// Invalid Cast Exception Here
foreach (String fieldName in infopathFields.Keys)
{
// If the same field is on sharepoint
if (workflowProperties.Item.Fields.ContainsField(fieldName))
{
// Update the sharepoint field with the new value from infopath
workflowProperties.Item[fieldName] = infopathFields[fieldName];
}
}
// Commit the changes
workflowProperties.Item.Update();
}
EDIT Je ne crée aucun de ces hashtables. Les clés ont des chaînes quelque part, car je peux entrer le nom du champ comme suit et obtenir la valeur du champ. J'essaie de trouver une façon abrégée de faire ce qui suit pour chaque champ :
workflowProperties.Item["FirstName"] = infopathFields["FirstName"];
workflowProperties.Item["LastName"] = infopathFields["LastName"];
workflowProperties.Item["Address"] = infopathFields["Address"];
workflowProperties.Item["DOB"] = infopathFields["DOB"];
ect...
EDIT Il a été dit que la table de hachage utilise des Guids, mais il est évident qu'elle contient aussi une chaîne de caractères, sinon je ne pourrais pas faire infopathFields["FirstName"]. C'est la valeur de la chaîne que je passe à l'intérieur que je veux.