我一直在嘗試以編程方式重現在SharePoint網站管理屏幕中編輯內容類型的字段屬性並選擇使用WSS 3.0 Web服務的Webs.asmx「UpdateContentType」方法沒有成功的「必需」單選按鈕的行爲。SharePoint Web服務 - 更新ContentType字段必需的屬性?
第一個困難是MSDN文檔中的問題,即所謂的字段應該是FieldRef類型,實際上它們需要是字段類型(reference)。修復後添加字段和刪除字段可以正常工作,但更新字段似乎根本不起作用。 (還應該注意的是,我遵循上一個鏈接的建議,使用Method="2"
來更新字段,但它沒有任何變化,並且使用除1以外的方法值進行添加,或者使用除3以外的方法進行刪除也可以正常運行。
這裏的Web服務調用(用繩子代替了可讀性的XmlNode對象略有修改):
SharePointWebServices.Webs webService = new SharePointWebServices.Webs();
webService.Url = "http://mysharepointserver/site";
webService.UseDefaultCredentials = true;
webService.UpdateContentType(
@"0x01005A089D9EC8A382458FB1F6C72096D52A",
@"<ContentType />",
@"<Fields />",
@"<Fields><Method ID=""1""><Field Name=""SomeField"" ID=""{8a4803c4-6545-4a7a-804d-237eebff0ce3}"" Required=""TRUE"" Hidden=""FALSE"" ReadOnly=""FALSE"" PITarget="""" PIAttribute="""" PrimaryPIAttribute="""" Aggregation="""" Node="""" /></Method></Fields>",
@"<Fields />");
通話結束後,現場仍需要=「FALSE」。
快速查看stssoap.dll程序集,指出在更新過程中顯然忽略了「必需」屬性。這是正常的行爲嗎?如果是這樣,推薦的方法是通過編程方式從客戶端代碼更改「必需」字段(不在SharePoint服務器上執行)?
任何幫助將不勝感激。
對我來說,在服務器上部署代碼實際上是不可能的,可悲的是,因此尋求解決方法。最終,如果找不到其他方法,我將不得不放棄這個功能。 – CMerat 2009-08-12 13:33:46