2011-08-19 76 views
0

我想知道在SharePoint中提交表單時是否可以創建文件夾。我在Infopath中創建了一個自定義的SharePoint列表表單,並且我想向提交按鈕添加一個操作來創建四個文件夾,其中包含提交項目的標題的四個文檔庫中的每一個。在SharePoint 2010中提交列表表單時在庫中創建文件夾

但是我看到自定義代碼按鈕沒有爲Infopath中的SharePoint列表啓用,所以我無法在後臺添加任何代碼。從盒子裏出來的工作流程也不允許我這樣做,除非我失去了一些東西......還有什麼其他的方式來做到這一點?

在此先感謝您的幫助!

回答

0

是的,你可以做到這一點,但是,這是非常棘手的。

理論上,您可以調用Lists.asmx Web服務的「UpdateListItems」方法並傳遞批處理語句,但由於列表Web服務的實現不能在InfoPath中使用它。這就是爲什麼您需要編寫自己的Web服務來包裝UpdateListItems方法,以便您可以將它用於IP。

如果你不知道如何編寫一個Web服務(和SharePoint中託管的話),請使用StackOverflow上的搜索功能,或者考慮谷歌 - 大量的教程在那裏;-)

一旦你得到了網服務運行,你需要的服務引用添加到http://myserver/_vti_bin/Lists.asmx Web服務,然後創建以下方法:

[WebMethod] 
public void UpdateListItems(string listGuid, string xmlBatch) 
{ 
    var batch = new XmlDocument(); 
    batch.LoadXml(xmlBatch); 

    //create an instance of the lists proxy client 
    var listSvc = listService = new ListsWebService.Lists(); 

    //set the url of the client 
    listService.Url = "http://myserver/_vti_bin/Lists.asmx"; 

    listSvc.UpdateListItems(listGuid, batch); 
} 

請注意,如果您配置LISTSVC的網址(在本例等)硬編碼的,你需要做確保列表中,你想添加文件夾,是在th與網址相同的網站。如果你想讓這個方法更通用(我建議你這樣做),你可以簡單地將SiteCollection Url作爲參數傳遞給ListCvlectionUrl +「_vti_bin/Lists.asmx」。

一旦設置,您可以創建在InfoPath到新創建的Web服務數據連接和配置它是這樣的: Configuration of the Lists wrapper data connection

字段「列表名」,其實是List的GUID - 你可以通過單擊「庫設置」 - 「信息管理策略設置」通過用戶界面獲取它,然後從瀏覽器的地址欄複製它。示例:

{39d01277-4ba1-4589-90f8-c957b4b2dd09} 

字段「XML」包含用於創建文件夾的批處理腳本。你可以靜態聲明它,或者你可以使用concat()函數動態構建它。本示例在庫的根目錄下創建一個名爲「MyFolder」的文件夾。

<Batch> 
    <Method ID='1' Cmd='New'> 
     <Field Name='ID'>New</Field> 
     <Field Name='FSObjType'>1</Field> 
     <Field Name='BaseName'>MyFolder</Field> 
    </Method> 
</Batch> 

如果你需要有子文件夾,這也是可能的。以下示例將在文件夾「MyFolder」中創建一個名爲「MySubFolder」的文件夾。

<Batch> 
    <Method ID='1' Cmd='New'> 
     <Field Name='ID'>New</Field> 
     <Field Name='FSObjType'>1</Field> 
     <Field Name='BaseName'>MyFolder/MySubFolder</Field> 
    </Method> 
</Batch> 

然後你只需要添加一個提交按鈕動作就大功告成了:-)

還要注意,上面的代碼僅僅是一個例子(工作雖然)。如果您在生產中使用它,一定要加適量的異常記錄,因爲你會需要它:-)

希望這有助於!

+0

安德烈亞斯謝謝! 我會探討網絡服務的想法。我不是開發商,但我敢肯定,我會來的吧:) 將盡快我來正確 – Melkman

+0

啊好吧,我不知道更新後....你可能會想這傳遞給你最喜歡的sharepoint dev ;-) – int32

+0

哈哈,是的,我認爲是。我相信我們的開發人員會喜歡一個寵物項目:-)感謝您的幫助! – Melkman

相關問題