2010-10-10 5 views
0

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); 

     } 
+0

Il hérite de SPFieldUrl –

+0

Il n'y a pas de méthode this.update() dans la classe BaseFieldControl méthodes –

+0

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 –

Répondre

0

À partir du code que je peux voir que vous téléchargez à la bibliothèque , mais assurez-vous qu'il n'y a pas de post-retour. Encore une fois, je suggère, vous de créer le lien manuellement. Il est la plupart du temps de la forme // Hope this helps


S'il vous plaît visitez SharePointSchool.net pour commencer avec SharePoint 2010

+0

Comment puis-je m'assurer qu'il n'y a pas de publication. cela doit arriver quand j'appuie sur le bouton OK –

Questions connexes