J'ai développé un champ de point de partage personnalisé qui télécharge un fichier dans une bibliothèque de documents spécifique et stocke l'URL du fichier après l'avoir défini comme la valeur du champ. Le problème est que le fichier téléchargé est stocké deux fois dans la bibliothèque comme je veux et l'autre en pièce jointe avec l'élément dans la liste qui a ce champ. Comment puis-je éviter de sauvegarder le fichier en pièce jointe?Sharepoint Champ de téléchargement personnalisé et pièces jointes?
merci
Edit: Voici le code:
public override void UpdateFieldValueInItem()
{
string name="";
if(fileUploader.PostedFile.FileName!="")
{
//method to store the posted file in a certain library
string x= UploadFile(this.Web, fileUploader.PostedFile.FileName,fileUploader.FileName,out name);
//Stores The URL and the name of the file
SPFieldUrlValue urlValue = new SPFieldUrlValue() {
Description=name,
Url=x
};
this.Value = urlValue;
this.ItemFieldValue = urlValue;
}
}
méthode UploadFile
string UploadFile(SPWeb web,string path,string fileName,out string name)
{
UploadField uf = (UploadField)base.Field;
SPList docsList = web.Lists[uf.StoreList];
SPFolder folder = web.GetFolder(docsList.RootFolder.UniqueId);
byte[] contents = File.ReadAllBytes(path);
SPFile file= folder.Files.Add(folder.Url + "/" + fileName, contents);
//folder.Update();
SPListItem item = docsList.Items[file.UniqueId];
name = item["Name"].ToString();
return getItemURL(item);
}
Il hérite de SPFieldUrl –
Il n'y a pas de méthode this.update() dans la classe BaseFieldControl méthodes –
Ok le champ hérite de SPFieldUrl mais l'instance de remplacement public UpdateFieldValueInItem() est dans le contexte BaseFieldControl et c'est la méthode dans laquelle l'élément est mis à jour. La méthode update() de SPFieldUrl met à jour les propriétés du champ lui-même. de l'objet –