Question

j'ai une coutume ASPX page où l'utilisateur saisit les données et clique sur Enregistrer pour ajouter un nouvel élément à la liste.Le champ My Department est un Managed Metadata field (un seul choix).L'utilisateur définit la valeur de ce champ via TaxonomyWebTaggingControl contrôle.Le problème se produit lorsque la valeur est censée être définie sur le nouvel élément de liste :

string departmentField = "My_x0020_Department"; //internal field name

SPListItem item = myList.Items.Add();
item[SPBuiltInFieldId.Title] = this.documentTitleTextBox.Text;
item[departmentField] = this.DepartmentTaxonomy.Text; //error fires here
item.Update();

L'erreur est ArgumentException: Value does not fall within the expected range. Si l'utilisateur ne précise pas la valeur du département, c'est-à-diresi this.DepartmentTaxonomy.Text = string.Empty; alors il n'y a pas d'erreur.

Était-ce utile?

La solution 2

OK, j'ai trouvé la solution au problème, mais pas la cause.Au lieu de simplement écrire la valeur sous forme de chaîne this.DepartmentTaxonomy.Text, j'ai vraiment dû faire un effort supplémentaire pour créer manuellement TaxonomyFieldValue objet.

Ainsi, l’obtention de TaxonomyFieldValue se fait selon cette méthode :

public TaxonomyFieldValue GetTaxonomyValue(SPList list, string fieldName, string fieldValue)
{
    string[] fieldValueParts;
    TaxonomyField taxonomyField;
    TaxonomyFieldValue taxonomyFieldValue;

    fieldValueParts = fieldValue.Split(TaxonomyField.TaxonomyGuidLabelDelimiter);
    taxonomyField = list.Fields[fieldName] as TaxonomyField;
    taxonomyFieldValue = new TaxonomyFieldValue(taxonomyField);
    taxonomyFieldValue.TermGuid = fieldValueParts[1];
    taxonomyFieldValue.Label = fieldValueParts[0];

    return taxonomyFieldValue;
}

Et voici comment j'ai utilisé cette méthode :

string departmentField = "My_x0020_Department"; //internal field name

SPListItem item = myList.Items.Add();
item[SPBuiltInFieldId.Title] = this.documentTitleTextBox.Text;
item[departmentField] = this.GetTaxonomyValue(myList, departmentField, this.DepartmentTaxonomy.Text);
item.Update();

Cela a résolu le problème.

Autres conseils

au lieu de Item [Départementfield]= this.departmentTaxonomy.text;
essayer Item [Départementfield]= this.DepartmentTaxonomy.label;

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top