2010-10-10 53 views
0

我開發了一個自定義sharepoint字段,用於上傳特定文檔庫中的文件,並將該文件的URL存儲爲該字段的值後存儲該文件的url。Sharepoint自定義上傳字段和附件?

問題是,上傳的文件在庫中存儲了兩次,因爲我想將另一個作爲附件與列表中具有此字段的項目相關聯。

我該如何避免savig文件作爲附件?

謝謝

編輯:下面的代碼:

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

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

它從SPFieldUrl – 2010-10-11 08:20:04

+0

繼承中有BaseFieldControl類沒有this.update()方法方法 – 2010-10-11 09:07:23

+0

確定該字段繼承自SPFieldUrl,但公用覆蓋無效UpdateFieldValueInItem()位於BaseFieldControl上下文中,並且這是該項目被更新的方法.SPFieldUrl的update()方法更新字段本身的屬性而非字段值的項目 – 2010-10-11 10:23:41

回答

0

從代碼中,我可以看到,您要上傳到庫,但只要確保沒有回帖發生。 再次,我建議,你手動創建鏈接。 它主要的形式 // 希望這有助於


請訪問SharePointSchool.net上手與SharePoint 2010

+0

我如何確保沒有回傳。當我按下確定按鈕時它必須發生 – 2010-10-13 07:16:59